列挙型を返す RESTful サービスがあります。
列挙型の値として整数を返すか文字列を返すかを考えていたとき、文字列を返すかどうかはクライアントのロケールに依存することに気づきました。
では、REST でローカリゼーションをどのように扱うべきでしょうか? ロケールは conneg の一部ですか?
列挙型を返す RESTful サービスがあります。
列挙型の値として整数を返すか文字列を返すかを考えていたとき、文字列を返すかどうかはクライアントのロケールに依存することに気づきました。
では、REST でローカリゼーションをどのように扱うべきでしょうか? ロケールは conneg の一部ですか?
ローカリゼーションはコンテンツ ネゴシエーションの一部であり、言語設定はAccept-Language
ヘッダー ( RFC ) を使用して指定されます。
RFC は、サービスがここで返すことができるものについて非常に厳密です。たとえば、ヘッダーが送信されない場合は任意の言語を選択できますが、ヘッダーが含まれている場合は、要求された言語の 1 つだけを返すことができます。別の言語にフォールバックすることはできません。
つまり、リソースが英語でしか利用できない場合、 でリクエストされたリソースは、デフォルトではなく、英語版を表示するようにAccept-Language: de
戻る必要があります。406 Unacceptable
仕様を使用しないがフォールバック オプションを許可する他の代替案については、他のいくつかの質問 ( 8204816、7892502 ) で説明されています。