2011-12-28 65 views
1

我是REST風格的Web服務的新手。我有以下2個問題:有關REST風格的Web服務的2個問題

  1. 有GET,POST,DELETE,PUT,TRACE,HEAD,OPTIONS,在HTTP中,我可以使用RESTful Web服務的唯一的動詞?

  2. 如何創建和使用自定義動詞?

我正在使用Java和Jersey創建我的REST風格的Web服務。

+0

除GET,POST,PUT和DELETE之外,您還需要什麼動詞?請解釋。 – 2011-12-28 19:56:42

+1

通過創建自定義動詞超出HTTP規範將使您的服務不符合HTTP規範,這可能會導致未解決的問題(例如互操作性)。此外,大多數開發人員永遠不會超越GET和POST,所以瞭解爲什麼你認爲你需要新的東西會很有趣 – tomfumb 2011-12-28 20:02:30

+0

說實話,我是新來的Web服務。所以,我可能對此有很多誤解。但是,假設我想提供10種不同的操作。那我該如何提供10個動作,只有7個動詞?每個動作都不是單獨使用動詞嗎?或者我錯了,可以使用條件在單個動詞下提供幾個動作? 總的來說,其他人如何設計他們的應用程序,使他們不需要額外的動詞,即使他們需要提供100種不同的動作? – 2011-12-28 20:22:29

回答

3

問題1的答案是,是的,因爲它們受HTTP規範的限制。然而,根據慣例,大多數REST應用程序僅使用GET和POST,因爲這些應用程序得到了所有Internet基礎架構的最廣泛支持。然後問題二的答案是否定的,你不能創建一個自定義的動詞。

您在使用HTTP動詞時必須考慮的事情是GET應該沒有副作用,因爲客戶端隨時可以重新發送GET(在檢測到通信故障的情況下)。然而,POST最多可以由客戶端發送一次,所以這應該用於導致不能重複更改的任何內容(如插入)。

通常情況下,您應該在應用程序中將您想要的「動詞」定義爲URL的一部分,而不是HTTP動詞。

+0

謝謝弗朗西斯。這就說得通了。 – 2011-12-28 20:59:41

+0

如果你喜歡它,請[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work):) – 2011-12-28 21:01:30

+1

我可以認爲沒有理由讓你「添加「一個動詞。至少你會讓你的客戶使用許多框架來進行web服務調用,因爲這些框架是圍繞標準的HTTP動詞構建的。如果你有時間並且想要真正瞭解HTTP可以爲你做什麼,我強烈推薦閱讀Jim Webber,Savas Parastatidis和Ian Robinson的「REST in Practice:Hypermedia and Systems Architecture」。在完成本書之前,我並不真正瞭解HTTP。 – 2011-12-28 22:03:23

0

那我該如何提供10個動作只有7個動詞?

Web服務背後的想法是關注對象,而不是動詞。

您的操作是「創建」(「POST」),「檢索」(「GET」),「更新」(「PUT」)或「刪除」(「刪除」)。

不是每個動作都根據單獨的動詞嗎?

不可以。您可以擁有所有需要的物件。你只需要四個動詞來創建,查找,更改和刪除對象。

或者我錯了,可以使用條件在單個動詞下提供幾個動作?

不可以。您可以創建一個create(「POST」)請求,該請求又可以創建多個單獨的對象。

總的來說,其他人如何設計他們的應用程序,使他們不需要額外的動詞,即使他們需要提供100種不同的動作?

您專注於對象。對象被創建,檢索,更新和刪除。