2

ルーティングに関する本(http://www.yesodweb.com/book/routing-and-handlers)には、次の段落があります。

各リクエストメソッドの個別のハンドラーは同じであり、さらにリクエストメソッドのリストがあります。リクエストメソッドはすべて大文字である必要があります。たとえば、/ person /#String PersonR GETPOSTDELETEです。この場合、3つのハンドラー関数getPersonR、postPersonR、およびdeletePersonRを定義する必要があります。

次のような実行

curl -X DELETE localhost:3000 / person / 1

動作するため、サーバーはこれらの要求を処理できます。

いくつかの例(https://github.com/snoyberg/haskellers/blob/master/routeshttp://pbrisbin.com/posts/posts_databaseなど)は、これを処理するために(DELETEの代わりに)GETまたはPOSTリクエストを使用します。

YesodコードからDELETEリクエストを呼び出す簡単な方法はありますか?ルートハンドラーdeletePersonRが呼び出されるように?

4

1 に答える 1

2

ページ上のプレーンリンクまたはフォームを使用してアクセスできるGETandメソッドとは異なり、メソッドはJavaScriptを使用する必要があり、すべてのブラウザーでサポートされているわけではありません。これが、代わりによく使用される理由です。JavaScriptからメソッドを呼び出すための最も簡単な方法は、jQueryなどのJavaScriptフレームワークを使用することです。POSTDELETEPOSTDELETE

$.ajax({
  url: "/person/1",
  type: "DELETE",
  success: function(html){
    alert("Ok, deleted");
  }
});
于 2011-11-07T21:24:37.077 に答える