2009-01-21 63 views
4

我正在開發一個Python Web應用程序作爲學習練習,並且正在研究讓我的應用程序成爲RESTful。如何在RESTful Web應用程序中執行「不太流行」的HTTP操作?

爲此,我希望能夠處理適用的各種HTTP動作/動詞。例如,如果id爲12的小部件用URI http://domain/widget/12表示,並且我想讓最終用戶能夠刪除此小部件,則他們應該能夠針對/ widget/12發出HTTP DELETE請求。

但是,據我所知,HTML表單只支持GET和POST,那麼我將如何使用「不太受歡迎的」HT​​TP操作(如DELETE)進行HTTP請求呢?

假設在小部件12的視圖頁面(由HTTP GET返回),我想包括一個只有一個提交按鈕的表單來刪除該小部件。例如:

<form action="/widget/12" method="DELETE"> 
<input type="submit" value="Delete Me!" /> 
</form> 

但是,已經確定HTML表單不支持方法屬性的DELETE。那麼在這種情況下,從客戶端執行DELETE請求的RESTful方式是什麼?

回答

7

從瀏覽器中,您需要爲描述的場景使用XmlHttpRequest(Ajax)。如果您的客戶端或服務器不支持其他方法,則使用自定義X-HTTP-Method-Override標頭指定操作已變得很常見。

+0

rails有一個很好的方式,你使用POST,但包含一個_method參數,以便服務器知道你的意思。 – 2011-02-20 01:32:50

1

你要麼隧道穿越POST命令,或使用Ajax,或磁盤後(後隧道充當回來時,JavaScript的支持沒有發現跌倒)

相關問題