支持REST API中的多种语言

Jer*_*auw 2 rest asp.net-web-api

我有一组城市,我正在创建一个REST API(我的第一个REST API).每个城市都有许多与语言无关的东西,例如创建日期和人口数量.城市也有依赖于语言的东西,例如标题和简短描述.在城市内部文件具有以下格式:

{
   "population": 9042,
   "name": {
       "en": "Berlin",
       "nl": "Berlijn",
       // ...
   },
   // ...
}
Run Code Online (Sandbox Code Playgroud)

我的API的用户总是希望仅查看特定语言的城市信息,并返回如下内容:

{
   "population": 9042,
   "name": Berlin,
   // ...
}
Run Code Online (Sandbox Code Playgroud)

我做了通过这些访问/cities/:id/:language_code,例如cities/123/en.现在我要实施城市列表:GET /cities.那里也需要所要求的语言.由于这会导致/cities/:language_code,我得到的印象是把它放在网址的末尾并不是一个好主意,并怀疑我会更好/en/cities/...whatever....

这通常是如何在REST API中完成的?任何大的,很好实现的API都是一个很好的例子吗?

Ora*_*bîg 5

REST API基于HTTP协议,因此它们可以使用传统上用于定义首选语言环境的标头.

所以我会为此使用一个Accept-Language参数.

# Request
GET /cities/.... HTTP/1.1
Host: www.example.org
Accept-Language: en,en-US,fr;q=0.6
Run Code Online (Sandbox Code Playgroud)

会给:

{
   "population": 9042,
   "name": Berlin,
   // ...
}
Run Code Online (Sandbox Code Playgroud)