5

我想开发一个RESTful使用CRUDin Play 框架的应用程序。不幸的是,我找不到一种方法来定义PlayDELETEPUT路线。也许在 Play 中有 justPOST和available ?GET

4

6 回答 6

6

您确定不能使用 DELETE/PUT 吗?文档另有说法。

HTTP 方法

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

http://www.playframework.org/documentation/2.0.4/JavaRouting

于 2012-12-12T18:37:36.267 回答
5

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 );
});
于 2012-12-12T18:43:11.203 回答
2

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

例如,

*  /items/{id}               Items.display

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

于 2016-02-16T03:26:01.150 回答
1

如果您要从网络浏览器使用 PUT 或 DELETE,请不要忘记 OPTIONS 方法。

于 2012-12-13T10:23:15.817 回答
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 of play 框架并且您正在使用 Java,那么最好使用 CXF 或 Spring webservices 或 Jersey。Play 是一个很棒的框架,但最适合 play 的是 scala

于 2015-04-23T08:09:37.703 回答
0

这是一个 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

于 2016-04-08T20:27:48.007 回答