1

たとえば、REST APIのコンテキストでは、Allow ヘッダー レスポンスフィールドは次のフェッチに役立ちます: 指定されたリソースの有効なアクション

例:

Allow: GET, HEAD

受け入れられたAccept ヘッダーのリストを取得するための既知のフィールドもありますか? 次のようなもの:

Accept: application/vnd.company.api.com.foo+json;v=42, application/vnd.company.api.com.foo+xml;v=42
4

1 に答える 1

1

応答を受け入れることができない場合、クライアントができることはあまりないため (返されたメディアの種類を処理する方法がわからないため)、サービスが受け入れることができるものをサービスに伝えるのはクライアント次第です。

サーバーが準拠するリソース表現を作成できない場合、サーバーは次の 2 つのいずれかを行うことができます。

  • 406 Not Acceptable を送信する
  • Accept ヘッダーに準拠しない応答を送信する (HTTP 1.1)

サーバーがRFC 2616に従って 406 を送信する場合、それが HEAD 要求でない限り、「応答には、利用可能なエンティティの特性と、ユーザーまたはユーザー エージェントがアクセスできる場所のリストを含むエンティティを含める必要があります。最も適切なものを選択してください。エンティティ形式は、Content-Type ヘッダー フィールドで指定されたメディア タイプによって指定されます。」

平易な英語で言えば、これは応答が提供できるコンテンツへのリンクを伴うべきであることを意味します。含まれているリンクにプロファイル属性を添付することで、メディアの種類を伝えることができます (ただし、これはメディアの種類によって異なります)。

サーバーが提供するメディア タイプの種類を知る 1 つの方法は、ルート URI で提供されるリンクのメニューからそれらを発見することです (既知のメディア タイプを使用)。たとえば、 へのリクエストで/Accept ヘッダーを指定するtext/htmlと、次のレスポンスを受け取る場合があります。

<html>
  <head>
    <link rel="foo" type="application/vnd.company.api.com.foo+json;v=42" href="http://v42.api.com/foos/3713678123" />
    <link rel="foo" type="application/vnd.company.api.com.foo+json;v=43" href="http://v43.api.com/foos/3713678123" />
  </head>
</html>
于 2013-10-28T21:34:24.897 に答える