我有一个客户端应用程序,使用REST服务与服务器通信.客户端应用程序是多语言的,这意味着服务器必须在呼叫期间知道用户的语言环境.我想使用"post for location"方法,因为它有一种美好而宁静的感觉.当数据被发布以说出动作资源时,那么uri是:
/actions/{language}
Run Code Online (Sandbox Code Playgroud)
该语言非常重要,因此我可以为GET本地化错误消息(有时是返回的数据).现在,当服务器响应时,它需要发回资源的URI.如果我寄回去
/actions/{id}
Run Code Online (Sandbox Code Playgroud)
其中id是新创建的资源的id,这不完全正确
/actions/{language}/{id}
Run Code Online (Sandbox Code Playgroud)
将是本地化资源的URI.但是,实际资源没有语言上下文.
对这种情况的最佳实践有何看法?
djn*_*jna 16
我不相信语言应该是"地址"的一部分,这是确定资源的东西,除非它确实是身份的一部分,以及你之间的紧张关系.
/actions/{id}
Run Code Online (Sandbox Code Playgroud)
和
/actions/{lang}/{id}
Run Code Online (Sandbox Code Playgroud)
表明事情不对.
一种替代方法是使用HTTP头区域设置信息来传递语言.另一种方法是将语言作为查询参数传递,它是请求的修饰符.
找不到如何发表评论,但我会回答djna。只是想添加一些:
我不是REST专家,但是从我的角度来看,查询将是完美的解决方案,并且还支持HTTP标头语言环境。
例如,如果发送了HTTP标头,则使用它。如果发送了查询参数lang,请覆盖HTTP标头。
这样就得到:
/actions/{id}?lang=es-la
Run Code Online (Sandbox Code Playgroud)
另外,您可以指定一种默认语言,但不限于一种(但我认为最好是英语,如果未指定),但是如果用户未指定,则可以获取用户GEO位置以客户端语言显示信息一。
接受HTTP标头也更进一步,并提供客户端选项。配置HTTP标头要比用客户端中的语言操纵每个请求URL容易得多。
希望对您有帮助:D
| 归档时间: |
|
| 查看次数: |
6619 次 |
| 最近记录: |