我正在为我的应用程序设计RESTful API。我有多语言的实体。我想知道我是否应该将此实体视为具有多种表示形式的资源 - 每种受支持的语言一种,或者我应该执行多种资源并在URI中引入语言部分。
就我而言,实体的生命周期如下:
在有效的RESTful设计中,在将资源发布到服务器之后,所有表示应该立即可用吗?或许REST允许在业务流程中添加新的表示而不是架构更改(实现沿JSON获取XML表示的可能性不是这样)?
答案 0 :(得分:0)
您可以使用HTTP标头“Accept-Language”来指示要提取的语言 - 或在网址中包含该语言 - 或两者兼而有之。
使用标题似乎是最优雅的方式,因为您的资源将具有适用于所有语言的稳定URL。这意味着您的资源将由一个且仅一个URL标识。
另一方面,通过在URL中包含语言,将URL分享到资源的一个特定语言版本会很有用。这意味着您的资源将由许多不同的URL标识 - 从概念上将其分成多个资源。
这两种方式都是有效的解决方案,不会破坏任何REST约束。
REST确实允许您随着业务的发展随时间添加相同资源的新表示。一个单一资源(由一个URL标识)可以有多种表示形式,具体取决于各种HTTP标头 - “Accept-Language”是一个,就像“Accept”一样,表示客户端喜欢的格式(JSON / XML / HTML / other)。