2009-11-16 160 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