REST和本地化资源

REST和本地化资源,rest,Rest,我想将我的资源本地化为几种语言。 如何使用REST体系结构将多种语言发布到资源 资源:/chapters,/chapters/:id 当POST发布到章节时,客户端发送数据结构: {本地化:{en:{title:'newchapter'},sk:{title:'Nova kapitola'}}} 并且创建了本地化en和sk的新篇章 当客户端希望通过URL/chapter/1访问本章时,表示中只应返回一种语言变体。我应该如何实现区域设置范围? 我可以将Accept Language HTTP头

我想将我的资源本地化为几种语言。 如何使用REST体系结构将多种语言发布到资源

资源:/chapters,/chapters/:id

当POST发布到章节时,客户端发送数据结构:


{本地化:{en:{title:'newchapter'},sk:{title:'Nova kapitola'}}}

并且创建了本地化en和sk的新篇章

当客户端希望通过URL/chapter/1访问本章时,表示中只应返回一种语言变体。我应该如何实现区域设置范围? 我可以将Accept Language HTTP头与所需的区域设置一起使用,Accept Language:sk,或者我可以将区域设置包含到URL中,如/chapters/1/en


另外,应该如何处理PUT请求?大多数情况下,只会更新一种语言变体,但偶尔会更新其中的两种或两种以上。

要更新数据,应在数据的有效负载中提供该语言,正如您所述。这很有效

对于抓取,这取决于是否允许1)可链接性,以及2)客户端更改其所选语言。我认为你两者都想要——在你的应用程序中更改URL或切换语言,然后在浏览器中切换并更改浏览器范围内的语言环境设置更容易、更可取

因此,请检查您的url、应用程序cookie或应用程序用户数据中的语言,并使用Accept language标头作为回退


我不明白你的问题。您描述的数据结构可以处理多种语言的更新,不是吗?只要放置到的URL仍然是一个可寻址的资源,您就可以按照自己的意愿处理放置内容。

+1非常有趣的问题……是的,链接性非常重要,这是一个很好的观点。PUT,在本例中是对现有资源的更新,应该实现为完全用新状态替换当前状态,这意味着用一个PUT请求发送所有语言变体。在大多数情况下,只有一种语言变异会从服务器中提取出来进行处理。我认为最好将每种语言公开为子附属资源:/chapter/1/:language。这种地址可链接性还使缓存更容易。谢谢。是的,那会有用的。您还可以“重载”PUT/chapter/1以查找您在问题中定义的
本地化结构(允许在一个请求中进行多次更新,这在某些情况下可能很重要)。