Должен ли я хранить _method = PUT / DELETE в сообщении или в URL - PullRequest
4 голосов
/ 20 марта 2009

Я использую ASP.NET MVC для создания веб-приложения RESTful и планирую туннелировать PUT и DELETE запросы через POST, поскольку это кажется наиболее прагматичным обходным путем.

Что я хотел бы знать, так это то, должен ли я передавать информацию через 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 выглядит ужасно

Ответы [ 4 ]

4 голосов
/ 20 марта 2009

Вы видели этот вопрос? Из того, что я понимаю, заголовок x-http-method-override является предпочтительным решением этой проблемы.

2 голосов
/ 26 июня 2012

Это больше личных предпочтений. Веб-сервисы Restful, OReilly, описывают оба взаимозаменяемо.

При этом я предпочитаю первый метод по соображениям программиста. В Отдых, когда я смотрю на код, я мысленно читаю

VERB http://someuri.com/someresource/id

Глагол и ресурс близки друг к другу.

С PUT и DELETE вы должны использовать обходной путь, подобный тому, который вы показали. В первом примере ресурс и глагол все еще находятся близко друг к другу на одной строке.

Однако во втором примере ресурс разделен на две строки. Глагол включен в ту же строку, что и идентификатор ресурса, но не в имени ресурса. Это очень, очень незначительно, но для меня это делает второй пример менее читабельным.

0 голосов
/ 20 марта 2009

Не то, что у меня есть, но вы не должны использовать:

<form method="put" action="resource">
    <!-- fields -->
</form>

И / или

<form method="delete" action="resource">
    <!-- fields -->
</form>

...

0 голосов
/ 20 марта 2009

Они эквивалентны.

Хотя если бы нажал, я бы предпочел отправить его в пост сам, но это субъективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...