7

異なる言語でリソースを取得するための REST のベスト プラクティスはありますか。現在、

www.mysite.com/books?locale=en

accept-language ヘッダーを使用できることはわかっていますが、使用した方がよいでしょうか。

www.mysite.com/books/en or www.mysite.com/books.en

またはそれは問題ではありませんか?

4

3 に答える 3

21

サーバーが同じ書籍の異なる翻訳またはローカライズされたバージョン (つまり、RESTful の観点からは同じリソース) を返すようにしようとしている場合は、リソースは同じですが表現が異なるベースであるため、Accept-Languageを使用します。クライアントのニーズに。

ただし、クライアントのロケールに基づいて完全に異なる書籍を返そうとする場合(たとえば、ユーザーがフランスにいることがわかっている場合にフランス語で書かれた書籍を返す場合)、異なるリソースが返されるため、URI は異なる必要があります。この時点で、何よりもクエリ要求について話していることになります。それだけの価値があるため、この/books/enアプローチは合理的に聞こえます。もう 1 つの方法は、ロケールまたは言語をリソース パラメーターとして GET as に追加することです/books?lang=en

于 2011-11-21T02:09:00.053 に答える
7

これを次のように実装するのが最善の方法だと思います。

  1. HTTP の Accept-Language ヘッダー
  2. /en/books/... などの URI の言語プレフィックス

つまり、両方のソースからの言語を受け入れることができます。実装は次のとおりです。

  1. Accept-Language ヘッダーが提供されているかどうかを確認し、これを変数に保持します。
  2. リクエスト URI が/en、/fr、またはその他の既知の言語コード (システムでサポートされている) で始まる場合、この新しい値で言語変数を上書きし、URI から削除します。つまり、URI が/en/books の場合、/books になります .
  3. 言語が指定されていない場合は、デフォルトの言語を変数に保持します (例: "en")

このアプローチにより、a) パス ルーティングが言語にとらわれず、システムがパスで均一に動作することを確認できます。b) 言語処理/ネゴシエーションは、スクリプトから完全に分離されます。ソースが何であり、どのように要求されたかさえ知らなくても、スクリプトで言語情報を使用できます。

于 2011-11-21T06:15:42.567 に答える
0

質問RESTful URL: where should I put locale?に対する回答の manuel-aldanaのコメントに同意し ます。example.com/en/page vs example.com/page?locale=en

クライアントがAccept-Languageへのフォールバックで言語を明示的に指定できるように、最初にパラメーター ( l​​ocale=en など) を確認します。

于 2012-06-16T19:14:26.340 に答える