在关于路由的书(http://www.yesodweb.com/book/routing-and-handlers)中有一段:
每个请求方法的单独处理程序都是相同的,加上a 请求方法列表。请求方法必须是ALL CAPITAL 快报。例如,/ person /#String PersonR GET POST DELETE。在这 case,你需要定义三个处理函数getPersonR, postPersonR和deletePersonR。
执行类似
的操作curl -X DELETE localhost:3000 / person / 1
有效,因此服务器能够处理这些请求。
一些示例(如https://github.com/snoyberg/haskellers/blob/master/routes和http://pbrisbin.com/posts/posts_database)使用GET或POST请求(而不是DELETE)来处理此问题。
是否有直接的方式从Yesod代码调用DELETE请求?这样就可以调用路由处理程序deletePersonR
了吗?
答案 0 :(得分:2)
与可以使用页面上的纯链接或表单访问的GET
和POST
方法不同,DELETE
方法需要使用JavaScript,并且并非所有浏览器都支持。这就是经常使用POST
的原因。要从JavaScript调用DELETE
方法,最简单的方法是使用JavaScript框架,例如jQuery:
$.ajax({
url: "/person/1",
type: "DELETE",
success: function(html){
alert("Ok, deleted");
}
});