【问题标题】:Should resource ids be present in urls?资源 ID 应该出现在 url 中吗?
【发布时间】:2012-12-17 15:24:35
【问题描述】:

在资源 id 可以通过其他方式识别的情况下(例如 current_user 用于需要身份验证的页面),从 url 中省略 id 是否是个好主意? (例如,/students/1/homework/students/homework)。

另外,这会对 url 的稳定性有什么影响吗?我怀疑它适用于 HTTP 动词,但对于自定义操作我不太确定。

【问题讨论】:

  • 还可以考虑/students/current/homework 替代方案。

标签: ruby-on-rails url rest


【解决方案1】:

我想这取决于您的应用程序以及对客户有用的内容。如果您的连接用户是可以查看所有学生作业的管理员,那么/students/1/homework 路径是有意义的,但是如果只有学生使用此资源,那么/students/homework 更有意义。
本质上,后者可以被认为是所有学生资源的namespace
我发现将这些资源按namespaces 拆分非常有用,以免混淆客户端编写者并保持您的授权非常清晰(谁可以看到/做什么)。

【讨论】:

    【解决方案2】:

    在您的示例中,这 2 个 URI 标识不同的资源:

    • 用户 #1 的作业,
    • 当前用户的作业。

    选择很大程度上取决于您认为人们想要参考的资源(例如通过电子邮件或书签)。

    我不认为第二种解决方案是 unRESTful,但我更喜欢第一种,因为它与许多附加功能兼容(例如,教师可以访问学生作业的表示)。

    【讨论】:

      【解决方案3】:

      URL 应始终指向一个特定资源。它们可以是绝对的,也可以是相对的。把它想象成一个文件系统。在某些情况下(安全性/可扩展性),您不能允许列表。

      • 基于会话/相关资源 /students/me, /students/latest, /students/latest/homework/lastest
      • 绝对资源 /students/3, /students/3/homework, /teachers/3/homework/3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 2015-04-01
        • 1970-01-01
        • 2019-04-20
        • 2014-10-18
        • 1970-01-01
        相关资源
        最近更新 更多