私は、URLを整理し、それにロケールを配置する方法を決定しています。私には2つの選択肢があります。
片側から見ると、example.com/en/page
はexample.com/page?locale=en
よりも優れてコンパクトに見えます。反対側から、2つの表現を持つ1つのリソースに対して2つのURL example.com/en/page
とexample.com/ru/page
があります。もちろん、example.com/page?locale=en
の場合も、1つのリソースに2つのURLがありますが、私の好みでは少しRESTfulです。
ベストプラクティスは何ですか?何を使用していて、その理由は何ですか。
ローカリゼーションは、Restful APIのコンテンツネゴシエーションの一部です。
だから私の好みの方法でヘッダーを介してそれを行います。 HTTPは、必要な言語を定義する標準的な方法を提供します。 Accept-Language ヘッダーをご覧ください。
https://www.w3.org/International/questions/qa-accept-lang-locales から:
HTTP Accept-Languageヘッダーは、当初はユーザーの言語を指定することのみを目的としていました。ただし、多くのアプリケーションはユーザーのロケールを知る必要があるため、一般的な慣習ではAccept-Languageを使用してこの情報を決定しています。 HTTP Accept-Languageヘッダーのみを使用してユーザーのロケールを特定することはお勧めできません。 Accept-Languageのみを使用する場合は、ユーザーの好みに合わない選択肢をユーザーに手渡すことができます。
私の好み:
Accept-Language
ヘッダーにフォールバックAccept-Language
ヘッダーが定義されていない場合、documentedのデフォルトのロケールにフォールバックContent-Language
<some-root-tag xml:lang="en-US">
のように、応答ペイロードにロケールを設定します( http://www.opentag.com/xfaq_lang.htm を参照)