休息 API 内容语言协商

Rest API content language negotiation

我目前正在构建一个 API,开发人员可以在其中通过 header 调用和请求特定语言。但我也在为管理员开发一个 API 客户端(有点像 CMS)。

对于那个客户,我希望能够在一个电话中 return 所有可用的语言环境。

例如,API public 调用 (language=en) 将 return 以下内容:

{
    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'
        }
    }
}

是否有任何 REST 标准可以实现此目的并避免发出 2 API 次请求?

我会推荐类似的东西

GET /users/steve

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

Accept-Language header 设置为 en

GET /multilang/users/steve

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

获取所有语言的所有版本。这个解决方案的一大优势是你保留了资源的原始结构(你只是将原始结构嵌套在 multilang 资源中) - 它不会根据 lang header 改变它的结构 - 这将是在同一资源上使用语言 header 获得结构 x 和没有 header 的结构 y 是混乱且不一致的。

您可能会发现的其他灵感 there