我想开发一个RESTful
使用CRUD
in Play 框架的应用程序。不幸的是,我找不到一种方法来定义PlayDELETE
的PUT
路线。也许在 Play 中有 justPOST
和available ?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 模块(幸运的是,恕我直言),用于使用非标准方法定义路由,DELETE
或者PUT
您只需在路由中使用所需的方法:
配置/路由:
PUT /put-item controllers.Application.putItem()
无论如何,要从浏览器方法中使用它们,GET
否则POST
您需要创建一个 AJAX 调用,关于这个主题有一个大的分步示例,无论如何您也可以通过定义使用常见的jQuery.ajax()构建它请求type
$.ajax({
type: "PUT",
url: "@routes.Application.putItem()",
data: { name: "John", location: "Boston" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
定义这些的一个好方法是使用通配符 (*) 这将允许您使用任何有效的 http 方法,包括您询问过的那些。
例如,
* /items/{id} Items.display
在路由中将允许 GET /items/15 或 PUT /items/15。使用这样的通配符可以使您的路由定义更简单、更灵活。
如果您要从网络浏览器使用 PUT 或 DELETE,请不要忘记 OPTIONS 方法。
这是我为删除和更新所做的
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 of play 框架并且您正在使用 Java,那么最好使用 CXF 或 Spring webservices 或 Jersey。Play 是一个很棒的框架,但最适合 play 的是 scala
这是一个 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 示例项目:https ://github.com/nemoo/play-slick3-example