2014-09-26 52 views
0

我有標記的概念。該系統有幾個標籤,可以在/標籤處獲取。提交具有關聯標記的資源時的寧靜

標籤由ID和名稱組成。

當用戶提交一個房子,他可以添加多個標籤,所以對提交衆議院JSON,可能是這樣的:

{"house" : { "name" : "White House", "tags" : [8,10,9] } } 

凡8,10,9會的的ID標籤。

但是,如果我讓用戶提供標籤的名稱,它會是RESTful嗎?像:

{"house" : { "name" : "White House", "tags" : ['big','residential','garden'] } } 

我不明白使用文本的優點,除此之外它更加自我解釋。這是一個很好的解決方案,或者至少是RESTful?

+1

RESTfulness與數據查詢,創建和更新的方式有關,與結構更少有關的數據。例如使用正確的動詞並提供鏈接到某些搜索結果中的狀態轉換。根據您描述的方式,讓用戶提供標記值永遠不會更多RESTful或更少RESTful。 – 2014-09-26 21:47:22

回答

0

您可以使用兩種語法。您的REST客戶端不關心,它是一臺機器,而不是一個人。

REST的統一接口約束是關於將客戶端從服務的實現中解耦的。該服務的實現主要由URI結構,數據結構等......從這些事情,你必須使用標準去耦客戶端:

  • 的URI標準indentify資源,
  • 的HTTP標準來定義的方法,以操縱資源,
  • 標準MIME類型來描述每個消息的序列化格式,
  • 鏈接描述了可用的操作和從URI結構解耦客戶端,
  • 標準vocabs添加語義到李(例如鏈接關係)
  • 標準vocabs到語義添加到數據結構(例如RDF vocabs)

在你的情況下提交的房子,你可以描述爲在響應鏈接的操作。因此,通過處理該資源,您的客戶將能夠生成表單。您可以將字段添加到鏈接中以獲取示例代碼。您可以將語義和範圍添加到該字段,例如帶有正確註釋的索引或名稱,以便您的客戶端能夠自動下載可用標記的列表等等。爲了執行此操作,您需要RDF兼容的MIME類型,例如JSON-LD和可以描述鏈接的詞彙,比如Hydra。

如果您不爲第三方客戶編寫API,那麼您可能不需要所有這些。在這種情況下,爲了實現統一的接口約束,定義供應商特定的MIME類型(可以包含鏈接)就足夠了,並且執行您想要的操作。請注意,您的客戶很容易因服務的任何變化而中斷。有超媒體類型可以是一個很好的模板,例如HAL,collection + json,shiren等...