我正在用python创建REST API,目前,有一条通往资源指导员列表的路径:
获取/教师
但是,我还有另一个客户端,用作具有管理员角色的用户的CRM。
对于客户,我想显示一个教师列表,但是具有更多的字段和不同的属性。
我的第一个想法就是要有路线:
获取/教师
这显然与上面的路线冲突。 这条路线的最佳名字是什么?
GET / instructors / admin
或
获取/ admin /讲师
或
GET / instructors?admin = True
我不确定该如何处理。 预先感谢。
答案 0 :(得分:2)
您需要关注安全性。诸如“ admin = true”之类的查询字符串参数很容易破解。
在/ URL末尾放置/ admin确实没有任何意义,因为您不是在请求admin对象。
在您建议的所有选项中,我认为这是最好的:
GET /admin/instructors
通过锁定/ admin路由下的所有内容,这可能是最容易保护的。
在代码中,当请求通过/ admin路由时,您可以创建一个更完整的教师对象。
答案 1 :(得分:0)
我很高兴我们最终讨论的命名约定完全取决于个人喜好和用例以及您的项目的设计方式,因此我将在这里保留我的观点..
就像你说的那样,上述所有内容似乎都不错,但是我会怎么做
如必须重新使用这些角色进行某些特定的操作(如
),则可以使用查询
GET /讲师/ all?credibility = PHD
像上面所说的那样,最好不要在父调用(例如 GET / Instructor )上显示所有内容,就像您首先说的那样,这会造成混乱,并且随着时间的推移,端点的可读性会随着时间而变得困难应用程序增加。