Вопрос:
Я использую небольшое доказательство использования концепции/шаблона с помощью Spring MVC. Меня попросили использовать GET, POST, PUT и DELETE в определенных обстоятельствах. Я справился с этим сейчас с большой помощью с этого форума.
Моя забота на этом этапе заключается в том, что единственным способом, с помощью которого я мог бы работать, отправить вызов DELETE, было добавить вторую форму на мою страницу jsp с помощью метода DELETE. В качестве доказательства концепции я добавил удаление на страницу редактирования, которая выглядит примерно так…
//Edit Form <form:form method=»PUT» modelAttribute=»person» action=»${pageContext.request.contextPath}/person/${person.id}» > // fields <input type=»submit» value=»Save and continue»></input> </form:form> //DELETE FORM <form:form method=»DELETE» modelAttribute=»person» action=»${pageContext.request.contextPath}/person/${selectedOpportunity.id}» > <input type=»submit» class=»btn btn-success btn-lg» value=»Delete»></input> </form:form>
Это хорошо работает – как удаление, так и редактирование. Моя забота – это всеобъемлющий подход, который немного ограничивает. По мере того как мы переходим к надлежащим требованиям и дизайну, мне может потребоваться быть более гибким – например, у вас есть список объектов с кнопками редактирования и удаления рядом с ними, например
Mr Bob Baines [edit] [delete] Ms Clara Dumont [edit] [delete] …
Я не думаю, что смогу сделать это, используя мой нынешний подход, и я вижу, что дизайн будет постепенно становиться все более запутанным и искаженным, чтобы следить за тем, что я могу сделать технически, а не тем, что на самом деле требуется.
Я видел несколько способов (на этом форуме в основном) использовать javascript и jquery для отправки HTTP-запроса delete, но я активно не поощряюсь использовать javascript на страницах, где это возможно. Может ли кто-нибудь сказать мне, есть ли способ отправить DELETE или POST из HTML вручную? Или я должен отталкиваться от требований к дизайну? Я видел некоторые аргументы, которые DELETE и PUT не нужны, поскольку все это может быть выражено с помощью POST и содержимого формы, но в более широких дискуссиях по архитектуре REST их использование, по-видимому, считается стандартным подходом?
Лучший ответ:
HTML-формы могут отправлять запросы POST или GET. Все остальное в HTML может отправлять только запросы GET (если правила кэширования браузера не заставят его автоматически сделать запрос HEAD для проверки на свежесть).
Единственный способ запуска любого другого метода HTTP из документа HTML – через JavaScript или плагины.