2009-11-16 97 views
4

我希望将我的资源本地化为多种语言。 如何使用REST架构将多种语言发布到资源?REST和本地化资源

资源:/章节/章节/:ID

当帖子发出后,以章,客户端发送的数据结构:

{localizations: { en: {title: 'New chapter' },sk: {title: 'Nova kapitola'} }}

和新的篇章与创建本地化的连接和SK。

当客户想要在URL/chapter/1上访问本章时,只有一种语言突变应该以表示形式返回。我应该如何实施区域设定范围? 我可以使用接受语言HTTP标头与所需的语言环境,接受语言:SK,或者我可以包括区域设置到URL像/ chapters/1/EN。

另外,如何处理PUT请求?在大多数情况下,只有一种语言突变会更新,但偶尔会更新2种或更多种语言突变。

+0

+1非常有趣的问题... – 2009-11-16 12:59:30

回答

1

为了更新数据,应该在数据的有效载荷中提供语言,就像您所描述的那样。这很好。

对于抓取,取决于您是否要允许1)可链接性,以及2)客户端是否要更改所选语言。我认为你想要两者 - 它更容易也更可取,可以更改网址或在应用程序中切换语言,然后在浏览器中浏览并更改浏览器范围的区域设置。

因此,请检查您的网址,应用程序Cookie或该语言的应用程序用户数据,并使用Accept-Language标题作为后备。

我不明白你的PUT请求问题。你描述的数据结构会处理多语言更新就好了,不是吗?只要您想要的PUT的URL保持为可寻址资源,您可以根据需要对待PUT。

+0

是的,可链接性是重要的,好点。 PUT,在这种情况下,现有资源的更新应该实现为完全用新状态替换当前状态,这意味着用一个PUT请求发送所有语言突变。 形成大部分时间只会从服务器获取一个语言突变进行处理。 我认为将每种语言公开为subortinate资源会更好:/ chapter/1 /:language。这种地址链接性也使缓存更容易。谢谢。 – Peter 2009-11-16 20:21:12

+0

是的,这将工作。您也可以“重载”PUT/chapter/1以查找您在问题中定义的“本地化”结构(以允许在一个请求中进行多个更新,这在某些情况下可能很重要)。 – 2009-11-17 03:20:45