異なる言語でリソースを取得するための REST のベスト プラクティスはありますか。現在、
www.mysite.com/books?locale=en
accept-language ヘッダーを使用できることはわかっていますが、使用した方がよいでしょうか。
www.mysite.com/books/en or www.mysite.com/books.en
またはそれは問題ではありませんか?
異なる言語でリソースを取得するための REST のベスト プラクティスはありますか。現在、
www.mysite.com/books?locale=en
accept-language ヘッダーを使用できることはわかっていますが、使用した方がよいでしょうか。
www.mysite.com/books/en or www.mysite.com/books.en
またはそれは問題ではありませんか?
サーバーが同じ書籍の異なる翻訳またはローカライズされたバージョン (つまり、RESTful の観点からは同じリソース) を返すようにしようとしている場合は、リソースは同じですが表現が異なるベースであるため、Accept-Languageを使用します。クライアントのニーズに。
ただし、クライアントのロケールに基づいて完全に異なる書籍を返そうとする場合(たとえば、ユーザーがフランスにいることがわかっている場合にフランス語で書かれた書籍を返す場合)、異なるリソースが返されるため、URI は異なる必要があります。この時点で、何よりもクエリ要求について話していることになります。それだけの価値があるため、この/books/en
アプローチは合理的に聞こえます。もう 1 つの方法は、ロケールまたは言語をリソース パラメーターとして GET as に追加することです/books?lang=en
。
これを次のように実装するのが最善の方法だと思います。
つまり、両方のソースからの言語を受け入れることができます。実装は次のとおりです。
このアプローチにより、a) パス ルーティングが言語にとらわれず、システムがパスで均一に動作することを確認できます。b) 言語処理/ネゴシエーションは、スクリプトから完全に分離されます。ソースが何であり、どのように要求されたかさえ知らなくても、スクリプトで言語情報を使用できます。
質問RESTful URL: where should I put locale?に対する回答の manuel-aldanaのコメントに同意し ます。example.com/en/page vs example.com/page?locale=en
クライアントがAccept-Languageへのフォールバックで言語を明示的に指定できるように、最初にパラメーター ( locale=en など) を確認します。