是否有理由不使用Play框架中的参数化路线

时间:2018-09-04 13:42:24

标签: web-applications playframework conventions

在工作中,我对使用Play Framework构建的现有网络应用进行了一些更改,并且注意到没有路由使用参数。在以前从事的项目中,我希望看到如下路线:

GET    /some-path/:id    @controllers.BaseController.somePath(id: Int)

相反,所有路线都是这样:

GET    /some-path        @controllers.BaseController.somePath()

在这种情况下,Web应用程序使用会话管理器来存储和检索值,但不会通过路由中的参数发送任何内容。我以前从未见过这种模式,也无法轻松地与任何知道为何如此设置项目的人联系。

像这样工作有什么特别的好处吗?例如,它更安全吗?

1 个答案:

答案 0 :(得分:0)

我觉得他们之所以使用会话数据来跟踪应为参数的原因是因为缺乏对RESTful设计的了解,而不是故意的选择。

您不想在会话中为请求/响应数据存储信息的原因主要是由于会话存在的原因:跨多个请求存储数据。对于标准的POST / GET操作,发送的数据仅打算保留一个请求的生命周期(将用户ID张贴到操作中,或获取要显示在页面上的列表)。在会话中存储这些参数会破坏会话的目的,并导致不必要的数据被转移到每个请求中,或者需要在处理完数据后从会话数据中删除参数。

理论上,您可以将此数据存储在“闪存”中,以解决数据在请求之间持久存在的问题,因为“播放”中的闪存会话仅持续一个请求,但是闪存不安全且可以修改,这取决于竞争条件,可能与旧版浏览器不兼容,并且主要是为了在显示/错误消息出现后持续显示一个请求。