Flask REST api资源URL建议

时间:2015-04-17 16:33:44

标签: api rest flask url-routing restful-url

我正在开发REST Api suing Python Flask,因为我有越来越多的路由,很难管理所有的资源网址。

现在,我很困惑哪一个是更好的URL参数做法。以下示例:

获取有限制的课程列表: /courses/<int:lim>/courses/list?lim=10

获取特定课程: /courses/<code>/<section>/courses/show?code=cs100&section=1

获取特定课程的学生列表: /courses/<code>/<section>/students/students/show?code=cs100&section=1

我应该使用/还是通过?

传递查询参数

我使用/的唯一原因是查询中没有冲突。 如果我有两个不同查询的这两个URL,我该如何解决它,以便我可以根据参数进行查询: /students/show?code=cs100&section=1(让所有学生参加该课程) /students/show?id=123456789(获取特定学生)

1 个答案:

答案 0 :(得分:1)

URL应标识资源或资源集合。您希望为客户端提供的任何选项,例如分页,限制,过滤,排序等。我认为最好包含在查询字符串或HTTP标头中。

关于您的具体问题:

  

获取有限制的课程列表:/courses/<int:lim>/courses/list?lim=10

都不是。使用/courses?lim=10。无需拥有/list组件,即行动,而非资源。

  

获取特定课程:/courses/<code>/<section>/courses/show?code=cs100&section=1

第一个。再次,/courses/show表示操作,您希望网址是资源的链接,在这种情况下是您的课程。

  

获取特定课程的学生列表:/courses/<code>/<section>/students/students/show?code=cs100&section=1

第一个原因与前一个相同。

我在最近的两次PyCon会议上已经提供了REST API演讲,如果您想了解更多API设计最佳实践,请随时查看它们: