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