RESTful Web サービスで代替 URI に応答する方法
-
09-06-2019 - |
質問
複数の一意の識別子があるため、リソースの 1 つに対して複数の URI を持つ RESTful Web サービスを構築しています。サーバーはリソースを返すことで代替 URI の GET リクエストに応答する必要がありますか、それとも正規 URI に HTTP 3xx リダイレクトを送信する必要がありますか?は HTTP 303 (こちらも参照) 最も適切なリダイレクトは何でしょうか?
説明:HTTP 仕様では、リダイレクトの選択は、今後のリクエストでどの URI を使用するかによって決まることが明確になっています。私のアプリケーションでは、「正規」URI が代替手段の中で最も安定しています。代替 URI は常に同じ正規 URI に誘導されるか、無効になります。
解決
私個人としては、リダイレクトをいじるのではなく、リソースを返すことに賛成したいと思っていますが、それは私の潜在意識がリダイレクトが遅いと言っているだけだと思います。
ただし、リダイレクトを使用する場合は、303 よりも 302 または 307 の方が適切であると思います。 w3.org 使用できるさまざまなリダイレクト コードの詳細が記載されています。
他のヒント
W3C の下で World Wide Web のアーキテクチャ、第 1 巻, 、URI エイリアスに関するセクションがあります (セクション2.3.1)次のように述べています。
「URI エイリアスが実際に共通通貨になった場合、URI 所有者はサーバー側リダイレクトなどのプロトコル技術を使用して 2 つのリソースを関連付ける必要があります。URI 所有者がエイリアス化された URI から対応する「公式」URI へのリダイレクトをサポートすると、コミュニティに利益がもたらされます。リダイレクトの詳細については、セクション 10.3「リダイレクト」を参照してください。 RFC2616. 。こちらも参照 チップス サーバー管理者向けのベスト プラクティスについて説明します。」
価値を考えると、302 リダイレクトをお勧めします。
Ubiguchi からの回答は私が必要としていたものを備えていましたが、応答コードに関する HTTP 1.1 仕様のセクションへのリンクを介してリダイレクトするのが最善策だと考えています。リダイレクト先の URI はより「正確」で安定しているため、将来のリクエストに使用する必要があるため、実際には 301 リダイレクトが必要であることがわかりました。