Playframework 游戏框架2

Playframework 游戏框架2,playframework,url-routing,httprequest,Playframework,Url Routing,Httprequest,我有一个关于最佳实践的问题:在应用程序中处理GET和POST请求的最佳方式是什么?它应该使用两个单独的控制器方法(一个用于POST,一个用于GET)来完成,还是在一个控制器中一起处理。他们对这两种选择都有什么优点/缺点吗?两者都是可行和可行的,我只想听听社会人士的意见。我使用的是play框架,但这实际上可以应用于任何MVC框架。下面我创建了第二个选项的简单示例,仅供参考 在routes文件中定义了两条路由(确保POST位于GET之上,以使其优先),它们都指向相同的方法: POST /index

我有一个关于最佳实践的问题:在应用程序中处理GET和POST请求的最佳方式是什么?它应该使用两个单独的控制器方法(一个用于POST,一个用于GET)来完成,还是在一个控制器中一起处理。他们对这两种选择都有什么优点/缺点吗?两者都是可行和可行的,我只想听听社会人士的意见。我使用的是play框架,但这实际上可以应用于任何MVC框架。下面我创建了第二个选项的简单示例,仅供参考

在routes文件中定义了两条路由(确保POST位于GET之上,以使其优先),它们都指向相同的方法:

POST  /index           controllers.Application.index()
GET   /index           controllers.Application.index()
在应用程序控制器中,我们有一种方法:

public static Result index() {
    if (request().method().equals("POST")) {
       // bind, validate, return badRequest if hasErrors else capture and redirect
    }        
    return Results.ok(index.render("Home", Application.testForm));
}
您的想法?

我倾向于使用,这使routes文件看起来像

GET    /foos          controllers.FooController.index()
GET    /foos/new      controllers.FooController.new_form()
POST   /foos          controllers.FooController.create()
GET    /foos/:id      controllers.FooController.show(id:Long)
GET    /foos/:id/edit controllers.FooController.edit_form()
PUT    /foos/:id      controllers.FooController.update(id:Long)
DELETE /foos/:id      controllers.FooController.delete(id:Long)

这使得处理Foo对象的大部分代码保持在同一位置,任何实用程序方法都在附近。您可能可以制作一个更智能的Play路由器,自动设置这些路由,就像Rails的资源一样。

通常
GET
POST
会做很多其他事情,因此如果您使用典型的REST方法,您会感到更舒适

GET     /objects/:id       controllers.Application.objFindSingle(id: Int)
GET     /objects           controllers.Application.objFindAll
PUT     /objects/:id       controllers.Application.objUpdate(id: Int)
POST    /objects           controllers.Application.objCreate
DELETE  /objects/:id       controllers.Application.objDelete(id: Int)

呵呵,你是第一个+1;)谢谢,你的评论(还有biesior)改变了我看待控制器的方式!谢谢!