2012-12-12 11 views
5

PlayフレームワークでCRUDを使用してRESTfulアプリケーションを開発したいと考えていました。残念ながら、PlayのルートにDELETEPUTを定義する方法が見つかりません。 PlayにはPOSTGETがありますか?Play Framework CRUD

+0

バージョン:あなたがここに全体のプレイ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) 

: – biesior

+0

私はPlay 2.0.4を使用しています。 – Ghashange

答えて

5

プレイ2.xでは、使用してルートを定義するためではないDELETEのような標準的な方法は、またはPUTあなただけで、必要なメソッドを使用する必要があります(私見幸い)1.xのブランチから知られていないCRUDモジュールを持っていますルート:

のconf /ルート:

とにかく
PUT  /put-item  controllers.Application.putItem() 

GET以外のブラウザの方法からそれらを使用しますまたはPOSTあなたはAJAX呼び出しを作成する必要があります、このトピックの大step-by-stepサンプルがありますが、とにかくあなたはまた、OPTIONSメソッドを忘れてはいけないtype

$.ajax({ 
    type: "PUT", 
    url: "@routes.Application.putItem()", 
    data: { name: "John", location: "Boston" } 
}).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 
+0

jQueryサンプルをありがとう! (+1) – atamanroman

1

要求を定義することにより、共通のjQuery.ajax()でそれを構築することができ、 WebブラウザからPUTまたはDELETEを使用する場合。ここで

0

はそれは削除のために私たちのために働いて、あなたの意図が使用のみにある場合

を置く私は削除のためにしたと

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; 
} 

ですプレイフレームワークのRESTFulとJavaを使用している場合は、CXFまたはSpring WebservicesまたはJerseyを使用する方が適しています。プレイは素晴らしいフレームワークですが、プレイに最も適したものはスカラーです

2

ワイルドカード(*)を使用するとよいでしょう。 これはあなたが求めたメソッドを含め、任意のメソッドの有効なhttpメソッドを使用できるようにします。例えば

経路における
* /items/{id}    Items.display 

はGET /アイテム/ 15又はPUT /アイテム/ 15を可能にするであろう。このようなワイルドカードを使用すると、ルート定義がよりシンプルで柔軟になります。のhttps://github.com/nemoo/play-slick3-example

0

これ

は、最も顕著なHTTP動詞を使用してプレイScalaのアプリケーションの例ルータです遊びます ?