2008-08-23 48 views
13

服務器應該允許將Web服務歸類爲RESTful的HTTP動詞的最小集合是什麼?REST風格的Web服務和HTTP動詞

如果我的主機託管服務提供商不允許PUTDELETE

這其實重要的是,我可以活得很快樂與剛剛後曾經得到POST


更新:謝謝你的答案鄉親,Roger's answer是因爲鏈接到比爾和埃利奧特·魯斯蒂·阿羅德採訪的可能是最好的。我現在明白了。


回答

20

是的,你可以沒有PUT和DELETE的生活。

本文告訴你爲什麼: http://www.artima.com/lejava/articles/why_put_and_delete.html

雖然爲真RESTafrians這可能是異端,在現實世界裏,你做什麼就可以了,你有什麼。要理性,你可以與自己的約定,你可以爲一致的,但你絕對可以建立一個良好的RESTful系統中沒有P和D.

RP

2

如果您只是使用GET和POST,它仍然是RESTful。您的Web服務可能只會執行只需要GET或POST的事情,所以沒關係。

1

當今的Web瀏覽器只處理得+職位。例如,在Rails中,PUTS + DELETES是通過隱藏的表單域「僞造」的。

除非你的框架有一些解決方法來「支持」PUTS + DELETES,現在不要擔心它們。

3

你也可以使用X-Http-Verb-Override:DELETE inst。 HTTP DELETE的。對於不能更改HTTP動詞並僅支持GET和POST的Silverlight客戶端來說,這也很有用...

2

如果協議的實現被破壞,REST允許違反協議約定(這樣只有非標準的東西這樣做是爲了解決實施中的破碎部分)。因此,在REST中允許使用其他方法來表示通常不受支持的動詞,如DELETE或PUT。

編輯:這裏是菲爾丁報價,誰是創建一個定義REST:

一個REST API應該不包含對通信協議的任何改變除了灌裝出或固定的細節標準協議的低位指定位,如HTTP的PATCH方法或鏈接標題字段。應該單獨定義破壞的實現(例如那些足夠愚蠢的相信HTML定義HTTP方法集的瀏覽器)的解決方法,或者至少在附錄中進行定義,並期望該解決方法最終將被廢棄。 [這裏的失敗意味着資源接口是特定於對象的,而不是通用的。]

+0

從這個POV中,所有的網頁瀏覽器都壞掉了。但是誰說,「REST客戶端」是指網絡瀏覽器? – 2009-07-20 18:59:54