web-dev-qa-db-ja.com

RESTful URL:ロケールはどこに置くべきですか? example.com/en/pageとexample.com/page?locale=en

私は、URLを整理し、それにロケールを配置する方法を決定しています。私には2つの選択肢があります。

  1. example.com/en/page
  2. example.com/page?locale=en-Googleの方法
  3. en.example.com/page -サブドメインを使用しているため、良くありません

片側から見ると、example.com/en/pageexample.com/page?locale=enよりも優れてコンパクトに見えます。反対側から、2つの表現を持つ1つのリソースに対して2つのURL example.com/en/pageexample.com/ru/pageがあります。もちろん、example.com/page?locale=enの場合も、1つのリソースに2つのURLがありますが、私の好みでは少しRESTfulです。

ベストプラクティスは何ですか?何を使用していて、その理由は何ですか。

28
petRUShka

ローカリゼーションは、Restful APIのコンテンツネゴシエーションの一部です。

だから私の好みの方法でヘッダーを介してそれを行います。 HTTPは、必要な言語を定義する標準的な方法を提供します。 Accept-Language ヘッダーをご覧ください。

37
manuel aldana

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のデフォルトのロケールにフォールバック
  • 応答
16
rmuller