Rest 播放框架积垢

Rest 播放框架积垢,rest,playframework,playframework-2.0,crud,Rest,Playframework,Playframework 2.0,Crud,我想使用游戏框架中的CRUD开发一个RESTful应用程序。不幸的是,我找不到一种方法来定义游戏路线中的DELETE和PUT。可能只有POST和GET可用?您确定不能使用DELETE/PUT吗?医生不这么说 HTTP方法 HTTP方法可以是任何有效的方法 由HTTP(GET、POST、PUT、DELETE、HEAD)支持 播放2.x没有1.x分支已知的CRUD模块(幸运的是,IMHO),用于使用非标准方法(如DELETE或PUT)定义路由,您只需在路由中使用所需方法: 形态/路线: PUT

我想使用游戏框架中的
CRUD
开发一个
RESTful
应用程序。不幸的是,我找不到一种方法来定义游戏路线中的
DELETE
PUT
。可能只有
POST
GET
可用?

您确定不能使用DELETE/PUT吗?医生不这么说

HTTP方法

HTTP方法可以是任何有效的方法 由HTTP(GET、POST、PUT、DELETE、HEAD)支持


播放2.x没有1.x分支已知的CRUD模块(幸运的是,IMHO),用于使用非标准方法(如
DELETE
PUT
)定义路由,您只需在路由中使用所需方法:

形态/路线:

PUT     /put-item     controllers.Application.putItem()
无论如何,要从除
GET
POST
之外的浏览器方法使用它们,您需要创建一个AJAX调用,本主题有一个很大的示例,无论如何,您也可以通过定义请求
类型来使用common构建它

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

如果要从web浏览器中使用PUT或DELETE,请不要忘记选项方法。

以下是我为删除和更新所做的操作

 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;
}
它对我们的delete和put有效


如果您的目的只是使用RESTFul of play框架,而您使用的是Java,那么最好使用CXF或SpringWebServices或Jersey。Play是一个很棒的框架,但最适合Play的是scala

定义这些框架的一个好方法是使用通配符(*) 这将允许您使用任何有效的http方法,包括您询问的方法

比如说,

*  /items/{id}               Items.display

in routes将允许GET/items/15或PUT/items/15。使用这样的通配符可以使路由定义更简单、更灵活。

这是play scala应用程序中的一个路由器示例,它使用了最突出的http动词:

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示例项目:

感谢jQuery示例!(+1)