Как вызвать метод запроса DELETE в Yesod? - PullRequest
2 голосов
/ 08 ноября 2011

В книге по маршрутизации (http://www.yesodweb.com/book/routing-and-handlers) есть параграф:

Отдельный обработчик для каждого метода запроса будет одинаковым, плюс список методов запроса.Методы запроса должны быть ВСЕ ЗАГЛАВНЫЕ БУКВЫ.Например, / person / # String PersonR GET POST DELETE.В этом случае вам потребуется определить три функции-обработчика getPersonR, postPersonR и deletePersonR.

Выполнить что-то вроде

curl -X УДАЛИТЬ localhost: 3000 / person /1

работает, поэтому сервер способен обрабатывать эти запросы.

Несколько примеров (например, https://github.com/snoyberg/haskellers/blob/master/routes и http://pbrisbin.com/posts/posts_database) используют GET или POSTзапросы (вместо DELETE) для обработки этого.

Существует ли прямой способ вызвать запрос DELETE из кода Yesod?Чтобы обработчик маршрута deletePersonR вызывался?

1 Ответ

2 голосов
/ 08 ноября 2011

В отличие от методов GET и POST, к которым можно обращаться с помощью простых ссылок или форм на странице, методы DELETE требуют использования JavaScript и поддерживаются не всеми браузерами.Вот почему вместо этого часто используется POST.Чтобы вызвать метод DELETE из JavaScript, самый простой способ - использовать среду JavaScript, такую ​​как jQuery :

$.ajax({
  url: "/person/1",
  type: "DELETE",
  success: function(html){
    alert("Ok, deleted");
  }
});
...