2012-01-30 86 views
2

我試圖創建一個REST服務,它顯示/添加/刪除/編輯數據庫中的足球數據。 我已經做出瞭如何實現這一點的設計,但它變得相當複雜。這是RESTful嗎?使用Tonic

例如,當一個目標得分時,我應該調用哪個URL?

所以問題是,我會朝着正確的方向走,還是你建議一些不同的方式?

enter image description here

回答

2
  • Abhiniav's answer同意除了對PUT不應該總是被用於編輯的事實。它只能用於當你是sending the new complete resource。如果您要發送修改或部分內容,請使用POST,或者不太知名的PATCH
  • 閱讀Safe and Idempotent methods應該是有用的。
  • 您很可能會使用POST或PATCH來更新目標計數:/{country}/team/{team_id}/goals
  • 某些不是REST的最大原因是服務無法被發現。請閱讀HATEOAS
+0

太好了,謝謝你的額外信息! – nhaarman 2012-01-31 00:10:01

+0

我不會推薦使用POST進行編輯,因爲它不是冪等的,並且使用setter語義進行部分更新。使用PATCH是部分編輯的最佳建議(儘管不如PUT那麼普遍)。 – mtsz 2012-01-31 01:10:53

+0

@mtsz協議中定義的POST不是冪等的,但這並不意味着您不能實現冪等性部分更改POST。我絕對同意你關於PATCH,這就是我提到它的原因。 – 2012-01-31 04:11:07

1

一切都在你的結構似乎罰款除了你應該開關接通和POST。 PUT可用於更新/創建記錄。如果您事先知道資源ID,則可以使用PUT。

當您要創建ID不知道的新資源時會使用POST。

#1有一個非常詳細的討論在這裏: PUT vs POST in REST

+0

這個例子(http://blog.bucket440.com/?p=209)實際上使用POST來更新,PUT來創建。 – nhaarman 2012-01-31 00:10:59

+0

沒有看到。我通常回避基於PHP的REST框架。他們大多數有不正確的實現。 :) – Abhinav 2012-02-01 08:54:28