如何在Yesod中调用DELETE请求方法?

时间:2011-11-07 21:12:29

标签: rest haskell yesod

在关于路由的书(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/routeshttp://pbrisbin.com/posts/posts_database)使用GET或POST请求(而不是DELETE)来处理此问题。

是否有直接的方式从Yesod代码调用DELETE请求?这样就可以调用路由处理程序deletePersonR了吗?

1 个答案:

答案 0 :(得分:2)

与可以使用页面上的纯链接或表单访问的GETPOST方法不同,DELETE方法需要使用JavaScript,并且并非所有浏览器都支持。这就是经常使用POST的原因。要从JavaScript调用DELETE方法,最简单的方法是使用JavaScript框架,例如jQuery

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