In Play フレームワークRESTful
を使用してアプリケーションを開発したいと考えていました。CRUD
残念ながら、Play のルートでDELETE
andを定義する方法が見つかりません。PUT
たぶん、PlayPOST
で利用できるものがあるでしょうか?GET
6 に答える
本当にDELETE/PUTが使えないのですか? ドキュメントはそうではないと言います。
HTTP メソッド
HTTP メソッドは、HTTP でサポートされている有効なメソッド (GET、POST、PUT、DELETE、HEAD) のいずれかです。
http://www.playframework.org/documentation/2.0.4/JavaRouting
Play 2.x には、1.x ブランチから知られている CRUD モジュールがありません (幸いなことに IMHO)。標準ではないメソッドを使用してルートを定義するDELETE
かPUT
、ルートで必要なメソッドを使用する必要があります。
conf/ルート:
PUT /put-item controllers.Application.putItem()
いずれにせよ、ブラウザメソッド以外からそれらを使用するには、AJAX 呼び出しを作成する必要があります。このトピックに関する大きなGET
ステップバイステップのサンプルがあります。とにかく、定義することにより、一般的なjQuery.ajax()で構築することもできますリクエストPOST
type
$.ajax({
type: "PUT",
url: "@routes.Application.putItem()",
data: { name: "John", location: "Boston" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
Web ブラウザから PUT または DELETE を使用する場合は、OPTIONS メソッドを忘れないでください。
これは、最も顕著な http 動詞を使用する play scala アプリケーションのルーターの例です。
GET / controllers.Application.listProjects
PUT /projects/:name controllers.Application.createProject(name: String)
GET /projects/list controllers.Application.listProjects
GET /projects/:id controllers.Application.projects(id: Long)
PUT /projects/:id/:name controllers.Application.addTaskToProject(name: String, id: Long)
PATCH /tasks/:id controllers.Application.modifyTask(id: Long, color:Option[String] ?= None)
ここで play scala サンプル プロジェクト全体を見ることができます: https://github.com/nemoo/play-slick3-example
削除と更新のために私がしたことは次のとおりです
POST /path/:id controllers.Controller.update(id: Integer)
POST /path/:id/delete controllers.Controller.delete(id: Integer)
そしてコントローラーではただ
public static Result delete(Integer id) {
Result result = null;
if(id>0){
//your code
}
else{
result = ok("invalid id");
}
return result;
}
削除と挿入でうまくいきました
Play フレームワークの RESTFul のみを使用することが目的で、Java を使用している場合は、CXF または Spring Web サービスまたは Jersey を使用することをお勧めします。Play は素晴らしいフレームワークですが、play に最適なのは scala です