我正在开发REST Api suing Python Flask,因为我有越来越多的路由,很难管理所有的资源网址。
现在,我很困惑哪一个是更好的URL参数做法。以下示例:
获取有限制的课程列表:
/courses/<int:lim>
或/courses/list?lim=10
获取特定课程:
/courses/<code>/<section>
或/courses/show?code=cs100§ion=1
获取特定课程的学生列表:
/courses/<code>/<section>/students
或/students/show?code=cs100§ion=1
我应该使用/
还是通过?
我使用/
的唯一原因是查询中没有冲突。
如果我有两个不同查询的这两个URL,我该如何解决它,以便我可以根据参数进行查询:
/students/show?code=cs100§ion=1
(让所有学生参加该课程)
/students/show?id=123456789
(获取特定学生)
答案 0 :(得分:1)
URL应标识资源或资源集合。您希望为客户端提供的任何选项,例如分页,限制,过滤,排序等。我认为最好包含在查询字符串或HTTP标头中。
关于您的具体问题:
获取有限制的课程列表:
/courses/<int:lim>
或/courses/list?lim=10
都不是。使用/courses?lim=10
。无需拥有/list
组件,即行动,而非资源。
获取特定课程:
/courses/<code>/<section>
或/courses/show?code=cs100§ion=1
第一个。再次,/courses/show
表示操作,您希望网址是资源的链接,在这种情况下是您的课程。
获取特定课程的学生列表:
/courses/<code>/<section>/students
或/students/show?code=cs100§ion=1
第一个原因与前一个相同。
我在最近的两次PyCon会议上已经提供了REST API演讲,如果您想了解更多API设计最佳实践,请随时查看它们: