2017-10-09 6 views
1

私はサーバーに接続し、APIを介してデータを登録/転送するデバイスを持っているとします。APIデザイン。アクションエンドポイント

GET: api/devices 
GET: api/devices/:id 
POST api/devices 
DELETE: api/devices/:id 

ものは、典型的なCRUDエンドポイントの例です:

は、私はあなたのようなものを持っているだろうと理解しています。

しかし、このデバイスが工場IDとの接続が許可されているかどうかを確認するためのエンドポイントはどこに追加しますか?

APIキーを持つ投稿フィールドを常にデバイスIDの形式で渡すことを考えていましたが、HTTP動詞が混乱していました。

だから私は、最善の方法は、このようなパラメータを追加することであると思う:

GET: api/devices/:id?id=something 

しかし、それは、このエンドポイントと冗長になります。

質問は次のとおりです。自分のデバイスをどのようにして確認できますか?

答えて

1

認証を行う方法を探しているようです。 Authorizationヘッダーとそのためのさまざまな認証方式を見てみましょう。既存の認証方式がニーズに合わない場合は、独自の認証方式を拡張することもできます。一般的なものはBasic,DigestおよびBearerです。ベンダー拡張の例はAWSです。

+0

はい、本質的にそれはそのことです。クライアントを自分でプログラムするので、私は典型的なAPI Key/secretシステムを探していないので、少し違っていると思った。しかし、ありがとう、私はそれらを見てみましょう! –

+1

@ NathanPrinsあなたが自分でクライアントを設計している場合でも、他の誰かが既に遭遇しているのと同様のパターンに遭遇する可能性があります)このような既存の標準を再利用すると、より少ないコードを書いたり、他人の文書に頼ったりする必要があります。 – Evert

+0

はい、私はそれを認識しています、それはプログラマーの仕事の半分です。しかし、この場合、ほとんどのAPIはあなたがアプリケーションを登録する必要があり、あなたは秘密を受け取り、あなたは認証するためにappnameと秘密の両方を使用します。しかし、この場合、私は人々が自分のデバイスを登録しなくてもいいようにしたいのですが、私はそれらのデバイスに、実際には第三者ではなく正当なクライアントであることを示す「工場」からの特定のキーを保持したいと考えています。基本、ダイジェストなどで修正しましたか?何か不足していますか? –

関連する問題