2012-10-27 50 views
1

我有一個RESTful服務返回一個枚舉。本地化在RESTful服務

我在想,是否要返回整數或字符串的枚舉值,當我想到返回一個字符串將取決於客戶端的區域設置。

那麼您應該如何處理REST中的本地化? locg是locg的一部分嗎?

回答

7

本地化內容協商的一部分,語言首選項使用Accept-Language標頭(RFC)指定。

RFC對服務允許返回的內容非常嚴格 - 例如,如果沒有發送頭文件,那麼您可以選擇任何語言,但是如果包含頭文件,那麼您只能返回其中一個請求的語言,並且不允許回到不同的語言。

換句話說,如果一個資源只有英文版本可用,那麼請求Accept-Language: de的資源應該返回406 Unacceptable而不是默認顯示英文版本。

在其他一些問題(8204816,7892502)中討論了不使用規範但允許回退選項的其他替代方法。

+0

從RFC7231開始,[這不再是這種情況](https://tools.ietf.org/html/rfc7231#section-5.3.5)。事實上,將響應視爲不受內容協商的約束(並默認返回英文)優於發送406,因爲不這樣做「可以阻止用戶訪問他們可能使用的內容」。 – followben