2012-12-12 161 views
5

我想在Play框架中使用CRUD開發RESTful應用程序。不幸的是,我找不到在Play路線中定義DELETEPUT的方法。 Play中可能只有POSTGETPlay Framework CRUD

+0

哪個版本玩? – biesior

+0

我使用Play 2.0.4。 – Ghashange

回答

5

播放2.x中還沒有從1.x的分支稱爲(恕我直言幸運),使用規定的路線不一樣DELETE標準方法或PUT你只是需要使用所需的方法一個CRUD模塊路線:

的conf /路線:

PUT  /put-item  controllers.Application.putItem() 

反正從比GET其他瀏覽器的方法中使用它們或POST你需要創建一個AJAX調用,有關於這一主題的大型step-by-step樣,反正你可以用普通jQuery.ajax()通過定義請求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

不要忘記OPTIONS方法也建了,如果你打算從網頁瀏覽器使用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。 Play是一個奇妙的框架,但最適合玩遊戲是斯卡拉

2

一個很好的方式來定義這些是使用通配符(*) 這將允許您使用任何方法有效的http方法,包括那些你問。

例如,

* /items/{id}    Items.display 

在路線將允許GET /項目/ 15或PUT /項目/ 15。使用這樣的通配符可以使路由定義更簡單,更靈活。

0

這是使用最突出的HTTP動作戲的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) 

你可以看看全劇斯卡拉例如項目位置:中https://github.com/nemoo/play-slick3-example