web-dev-qa-db-ja.com

REST:HTTPヘッダーまたはリクエストパラメーター

RESTについていくつかの研究を行ってきました。 Amazon S ​​ APIは、RESTインターフェースに主にhttpヘッダーを使用していることに気づきました。パラメーター。

私の質問はこれです:主にhttpヘッダーを使用してRESTインターフェイスを開発する必要がありますか、リクエストパラメータを使用する必要がありますか?

44
Gevious

質問は主に定義されたパラメーターがリソース識別子(URI)の一部であるかどうかである場合、リクエストパラメーターを使用します。そうでない場合はHTTPカスタムヘッダーです。たとえば、ミュージックギャラリーでalbumのIDを渡すことは、URIの一部である必要があります。

たとえば、/employee/id/45(または/employee?id=45、RESTに偏見はありませんagainstクエリ文字列パラメーターまたは forスラッシュで区切られたクリーンURI()は1つのリソースを識別します。これで、リクエストヘッダーを送信してコンテンツネゴシエーションを使用できますcontent-type: text/plainまたはcontent-type: image/jpg情報または画像を取得します。この点で、リソースは同じと見なされ、ヘッダーはリソースの形式を定義するためにのみ使用されます。

一般的に、私はHTTPカスタムヘッダーの大ファンではありません。 これは通常、クライアントがサーバー実装の事前知識を持っていることを前提としています(自然なHTTP手段、つまりハイパーメディアを介しては発見できません)。常にREST anti-pattern

HTTPヘッダーは通常、HTTPの側面を定義します直交要求/応答のプロセスで達成されるものに。 Authorizationヘッダー(実際には誤った呼び名で、認証であるはずです)は典型的な例です。

63
Aliostad