Как указать метод DELETE в ссылке или форме?

Rfc2616 перечисляет множество методов помимо GET и POST, например, DELETE, PUT и т.д. Поле метода в html-формах, однако, кажется, разрешено указывать только GET или POST.

Возможно ли создать ссылку или форму на странице html, которая использует метод запроса, который не является GET или POST?

Ответы

Ответ 1

пытался понять это для приложения rails, которое использовало Angular на передней панели; они, похоже, работают для этой среды:

<a data-confirm="Are you sure?" data-method="delete" href="/link-to-resource" rel="nofollow">Delete</a>

Изменить: просто чтобы дать всем хедз-ап, я думаю, вам все равно нужно иметь jQuery для этого. Я удалил jQuery, и он перестал работать; Я вернул его и начал работать.

Ответ 2

Вы, конечно, не можете создать ссылку, которая использует ничего, кроме GET. Начиная с HTML, ссылки должны быть идемпотентными и свободными от побочных эффектов.

Для форм и XMLHTTPRequests ссылка Caps - это место для поиска: Доступны ли методы PUT, DELETE, HEAD и т.д. в большинстве веб-браузеров?.

Ответ 3

По умолчанию, нет способа сделать это. Ссылки всегда выполняют GET, формы могут использовать GET или POST.

Тем не менее, с небольшим JavaScript, это возможно. Рельсы, например, поставляются с помощниками, которые добавят атрибут data-method к ссылкам. Rails-UJS - это библиотека jQuery, которая будет прозрачно перехватывать клики по этим ссылкам и запускать форму submit с параметром _method, используемым для переопределения обычного метода HTTP. Наконец, Rack перехватит запросы с параметрами _method и перезапишет метод запроса значением _method.

Другие рамки, без сомнения, следуют аналогичной схеме.

Если вы хотите получить более подробную информацию, я написал объяснение того, как Rails, Rails-UJS и Rack работают вместе для этого.

Хорошо знать, как работают ваши библиотеки.

Ответ 4

Невозможно создать ссылку или форму с помощью метода удаления.

Многие веб-фреймворки создают скрытый ввод, называемый "_method" для обработки PUT и DELETE.

Я создал плагин для автоматического преобразования ссылок на формы: RestfulizerJs

Вы можете посмотреть здесь: https://github.com/Ifnot/RestfulizerJs

Ответ 5

@Не работает плагин, но я создал один, основанный на функции $.ajax вместо добавления форм hidden! здесь простой пример для запроса DELETE

HTML

<button class="delete" data-target="http://example.com/post/post-id/" data-method="DELETE" data-disabled="true">Delete Article</button>

JavaScript

$(".delete").restintag(optionsObj, function(data) {
    console.log(data);
},
function(error) {
    console.log(error);
});

https://github.com/KhaledElAnsari/RESTInTag/

Ответ 6

просто добавьте атрибут data-method, <a data-method='put' href='whatever'>link</a>