休息 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。
我目前正在构建一个 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。