[英]Should I store _method=PUT/DELETE in the post or in the url
我正在使用 ASP.NET MVC 構建一個 RESTful web 應用程序,我計划通過 POST 隧道 PUT 和 DELETE 請求,因為這似乎是最實用的解決方法。
我想知道的是,我是否應該像這樣通過 url 傳輸信息:
<form method='post' action='resource?_method=DELETE'>
<!-- fields -->
</form>
或者我應該像這樣通過發布的表單數據對其進行隧道傳輸:
<form method='post' action='resource'>
<input type='hidden' name='_method' value='DELETE' />
<!-- fields -->
</form>
以及各自的優缺點是什么?
編輯:我問這個問題的原因之一是我在某處讀到,將這樣的信息放在 url 中是一件好事,因為發布數據通常會丟失,但 url 會掛起(在日志文件等中) - 不幸的是它使url 難看
你見過這個問題嗎? 據我了解,x-http-method-override header 是解決此問題的首選方案。
這更多的是個人喜好。 Restful Web Services,OReilly,對兩者的描述有些互換。
話雖如此,出於程序員的意圖,我更喜歡第一種方法。 在 Rest 中,當我查看代碼時,我在心里讀到
動詞http://someuri.com/someresource/id
動詞和資源緊密相連。
使用 PUT 和 DELETE,您必須使用您所展示的解決方法。 在第一個示例中,資源和動詞仍然緊靠在同一行上。
但是,在您的第二個示例中,資源被分成兩行。 動詞與資源 ID 位於同一行,但遠離資源名稱。 這是非常非常次要的,但對我來說,這使得第二個示例的可讀性降低。
不是我有,但你不應該使用:
<form method="put" action="resource">
<!-- fields -->
</form>
和/或
<form method="delete" action="resource">
<!-- fields -->
</form>
...?
它們是等價的。
雖然如果按下,我更願意自己在帖子中發送,但這是主觀的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.