是否有理由不在Play Framework中使用参数化路由

问题描述 投票:1回答:1

在工作中,我正在对使用Play Framework构建的现有Web应用程序进行一些更改,并注意到没有任何路由使用参数。在以前的项目中,我一直在努力,我希望看到如下路线:

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

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

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

在这种情况下,Web应用程序使用会话管理器来存储和检索值,不会通过路径中的参数发送任何内容。我之前没有见过这种模式,也没有很容易访问任何知道项目设置原因的人。

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

web-applications playframework conventions
1个回答
0
投票

我有一种感觉,他们使用会话数据来跟踪应该是什么参数的原因是由于缺乏RESTful设计的知识,而不是故意的选择。

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

理论上你可以将这些数据存储在“flash”中来解决数据在请求中持久存在的问题,因为Play中的flash会话只能持续一个请求,但是flash不安全且可以修改,它受竞争条件限制,可能不会在旧版浏览器上兼容,主要用于提供显示/错误消息,这些消息在发生后持续一个请求。

© www.soinside.com 2019 - 2024. All rights reserved.