休息API内容语言协商

时间:2017-07-17 16:51:00

标签: rest api standards multilingual

我目前正在构建一个API,开发人员可以通过标头调用和请求特定语言。但我也在为管理员开发一个API客户端(类似于CMS)。

对于该客户,我希望能够在一次通话中返回所有可用的语言环境。

例如,API公共调用({ name: 'Steve', description: 'My english description', url: 'http://example.com' } )将返回以下内容:

{
    name: 'Steve',
    locales: {
        en: {
            description: 'My english description',
            url: 'http://example.com'
        },
        fr: {
            description: 'Ma description en français',
            url: 'http://example.com/fr'
        }
    }
}

但我也可以进行多语言调用以获取所有语言环境的数据:

{{1}}

是否有任何REST标准可以实现这一目标并避免发出2个API请求?

1 个答案:

答案 0 :(得分:0)

我会推荐像

这样的东西
GET /users/steve

{
    "name": "Steve",
    "description": "My english description",
    "url": "http://example.com"
}

Accept-Language标头设置为en

GET /multilang/users/steve

 [
     {
          "lang": "en", 
          "content": {
               "name": "Steve",
               "description": "My english description",
               "url": "http://example.com"
          }
     },
     {
          "lang": "fr",
          "content": {
              ...
          }
     }
 ]

获取所有语言的所有版本。这个解决方案的一个很大的优点是你保留了资源的原始结构(你只是将原始结构嵌套在multilang资源中) - 它不会根据lang头改变它的结构 - 这将是混乱和不一致的获取带有语言标题的结构x,并在同一资源上没有标题的情况下构造y。

您可能会发现其他灵感there