Как указать метод 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>