我目前正在构建一个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请求?
答案 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。