【问题标题】:Designing a restful URI for ternary relationships为三元关系设计一个宁静的 URI
【发布时间】:2012-10-30 14:47:01
【问题描述】:

我正在开发一个 Rails 项目,该项目将通过 URI 公开一组资源。我遇到的问题如下:

考虑这些模型,学生、笔记和课程。每节课可以有许多学生发布的笔记。在 Active Record 的文献中:

class Lesson < ActiveRecord::Base
  has_many :notes
end

class Student < ActiveRecord::Base
  has_many :notes
end

class Note < ActiveRecord::Base
  belongs_to :lesson
  belongs_to :user
end

现在我想知道支持以下场景的 URI 设计和资源设计:

检索由 id 为 5 的学生发布的所有笔记的列表 id 为 4 的课程。

请注意,如果我像这样在 routes.rb 中定义资源:

resources :lessons do
  resources :notes
end

resources :students do
  resources :notes
end

那么我可以通过“/lessons/4/notes/”和“/students/5/notes”访问笔记,但是我之前解释的查询呢?

提前致谢!

【问题讨论】:

    标签: ruby-on-rails rest resources uri


    【解决方案1】:

    这个怎么样?

    /notes?lesson=4&student=5
    

    这是一个 URI,可能只与 GET 一起使用。因此,它是一个完全有效的 URI,用于标识您想要的资源:满足特定条件的所有笔记的列表。

    注意: REST URI 不应受限于所用框架支持的内容。

    【讨论】:

    • 感谢您的回复。我也将使用这个 URI 来 POST 数据。所以我假设我应该使用 http 标头来 POST 数据,或者我应该使用相同的格式,即“/notes?lesson=4&student=5”来发布。
    • 不要发布到这样的 URI。查询参数lessonstudent 应该被解读为搜索参数:给我所有的小学生和学生的笔记。如果您想添加或更改笔记、课程或学生,请针对正确的 URI 使用 POSTPUT 执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多