2015-06-10 24 views
0

我正在爲我的應用程序設計RESTful API。我有多語言的實體。我想知道是否應該將此實體看作具有多種表示形式的資源 - 每種支持的語言一種,或者我應該執行多種資源並在URI中引入語言部分。REST:並非所有表示立即可用

在我的情況下,實體的生命週期如下:

  • 用戶EN語言版本增加了實體,
  • 一段時間後(可能是 數月或從不)用戶添加其他語言版本。

是否在有效的RESTful設計中所有表示應立即在POSTing資源到服務器後立即可用?或者,也許REST允許通過業務流程而不是架構更改來添加新的表示(實現沿JSON獲取XML表示的可能性並非如此)?

回答

0

您可以使用HTTP頭「Accept-Language」來指示要獲取哪種語言 - 或者在URL中包含語言 - 或者兩者兼有。

使用標題看起來是最優雅的方式,因爲您的資源將擁有所有語言的穩定網址。這意味着您的資源將由唯一的一個URL標識。

另一方面,通過在URL中包含語言,可以將URL分配給資源的一種特定語言版本。這意味着您的資源將通過許多不同的URL進行標識 - 從概念上將其分解爲多個資源。

兩種方式都是有效的解決方案,不會破壞任何REST約束。

REST確實允許隨着業務的發展隨着時間的推移添加同一資源的新表示。一個資源(由一個URL標識)根據各種HTTP頭可以有很多表示 - 「Accept-Language」就是一個,就像「Accept」一樣,表示客戶端喜歡的格式(JSON/XML/HTML/other)。