有关 REST 服务和 I18N 的最佳实践

2022-09-03 16:28:55

我有一个客户端应用,它使用 REST 服务与服务器进行通信。客户端应用是多语言的,这意味着服务器在呼叫期间必须了解用户的区域设置。我想使用“位置帖子”的方法,因为它有一种美好而宁静的感觉。当数据被发布为操作资源时,uri是:

/actions/{language}

语言很重要,这样我就可以本地化GET的错误消息(有时是返回的数据)。现在,当服务器响应时,它需要发回资源的URI。如果我发回

/actions/{id}

其中 id 是新创建的资源的 ID,这并不完全正确,因为

/actions/{language}/{id}

将是本地化资源的 URI。但是,实际资源没有语言上下文。

对此方案的最佳实践有何看法?


答案 1

使用接受语言 HTTP 标头。


答案 2

我不相信语言应该是“地址”的一部分,标识资源的东西,除非它确实是身份的一部分,以及你之间的紧张关系。

 /actions/{id}

 /actions/{lang}/{id}

表明有些事情不对劲。

一种替代方法是使用 HTTP 标头区域设置信息来传递语言。另一种方法是将语言作为查询参数传递,它是请求的修饰符。