ruby-on-rails - RESTful 路径是否适合 session 设置?

标签 ruby-on-rails rest

我有一个困境。

我的 Web 应用程序处理诸如人物、地点、 Assets (例如图像)、标签等主题,我在 routes.rb 中使用了由 map.resources 生成的 RESTful 路由。

访问者可以设置查看此数据的各种选项,例如排序顺序、选择我的 Assets 类型、所有者或相关标签以及查看类型。这些选项是粘性的,因此如果访问者导航离开,那么当他们返回 Assets View 时,相同的选项将生效。

为此,我创建了一个 SessionController 并使用 map.resource 关联了 Restful 路由。 update 方法接受诸如asset_type、view_type 和owner_id 等参数并将它们存储在 session 对象中。 AssetController#index 然后使用这些值来选择要显示的数据和正确的 View 。

我遇到的问题是我还需要能够发布像“http://www.foo.com/assets?user_id=10&tag_id=185&type=video&sort=recent”这样的 URL——用于通过电子邮件等发送。

查询参数会覆盖当前 session 中存储的任何设置。它们还需要具有粘性,否则“导航离开并返回到同一位置”的原则就被打破了。这意味着 AssetController#index 必须将任何查询参数与当前 session 设置合并,并将合并的结果存储回 session 中。

所以我现在有 2 种方法来做同样的事情,这似乎不是很 DRY。

我不喜欢 Session 具有这种精神 split 症的品质,但它确实简化了能够使用表单来选择排序顺序和设置复杂过滤选项等的事情。

将 session 视为要发布到的资源是否错误?
如果您能给我任何指导,我将不胜感激。

最佳答案

理论上你说的很对。 REST 解释了无状态约束 here通过 Fielding(REST 的“发明者”)。事实上,如果你想坚持他的 REST 提议,你根本不应该有“粘性”选项。这意味着必须在每次请求时传递参数,而不是从 session 对象中检索参数,这样您就可以在您描述的两种情况下采用一致的方法。

关于ruby-on-rails - RESTful 路径是否适合 session 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3667367/

相关文章:

ruby-on-rails - Rails - 调整 Redactor 文本编辑器的 f.text_area 大小和自动换行

java - reactx 和 REST Web 服务

node.js - Node -RED + DB2 - 消息 : string[18] "No response object"

ruby-on-rails - 关系 has_and_belongs_to_many 不保存数据

ruby-on-rails - Unicorn 陷入循环 "Refreshing Gem list"

java - Jersey - 如果使用多态性,JSON 响应为空

python - 如何管理访问 Django REST API 的权限?

python - 如何使用Python选择x级深的JSON数据

用于存储 Sessions/Cookie 的 Rails 应用程序的 Android 应用程序

ruby-on-rails - 从数组创建哈希的最简洁方法