在资源 id 可以通过其他方式识别的情况下(例如 current_user 用于需要身份验证的页面),从 url 中省略 id 是否是个好主意?(例如,/students/1/homework
到/students/homework
)。
另外,这会对网址的宁静有什么影响吗?我怀疑它适用于 HTTP 动词,但对于自定义操作我不太确定。
在资源 id 可以通过其他方式识别的情况下(例如 current_user 用于需要身份验证的页面),从 url 中省略 id 是否是个好主意?(例如,/students/1/homework
到/students/homework
)。
另外,这会对网址的宁静有什么影响吗?我怀疑它适用于 HTTP 动词,但对于自定义操作我不太确定。
我想这取决于您的应用程序以及对客户有用的内容。如果您的连接用户是可以查看所有学生作业的管理员,那么该/students/1/homework
路径是有意义的,但是如果只有学生使用此资源,那么该路径/students/homework
更有意义。
本质上,后者可以被认为是namespace
所有学生资源的一种。
我发现拆分这些资源非常有用,namespaces
以免混淆客户端编写者并保持您的授权非常清晰(谁可以看到/做什么)。
URL 应始终指向一个特定资源。它们可以是绝对的,也可以是相对的。把它想象成一个文件系统。在某些情况下(安全性/可扩展性),您不能允许列表。
/students/me
, /students/latest
,/students/latest/homework/lastest
/students/3
,,,/students/3/homework
/teachers/3/homework/3
在您的示例中,这 2 个 URI 标识不同的资源:
选择很大程度上取决于您认为人们想要参考的资源(例如通过电子邮件或书签)。
我不认为第二种解决方案是不稳定的,但我更喜欢第一种,因为它与许多附加功能兼容(例如,教师可以访问学生作业的表示)。