Flask REST api 资源 URL 建议

Flask REST api resource URLs suggestions

我正在研究 REST Api 起诉 Python Flask,因为我有越来越多的路由,很难管理所有资源 url。

现在,我很困惑哪个是 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(获取具体学生)

URL 应该标识一个资源或 collection 个资源。您想要为客户端提供的任何选项,例如分页、限制、过滤、排序等。我认为最好包含在查询字符串或 HTTP headers.

所以关于你的具体问题:

Get a list of courses with limits: /courses/<int:lim> OR /courses/list?lim=10

都没有。使用 /courses?lim=10。不需要 /list 组件,那是一个动作,而不是资源。

Get a specific course: /courses/<code>/<section> OR /courses/show?code=cs100&section=1

第一个。再一次,/courses/show 表示一个动作,您希望 URLs 是指向资源的链接,在本例中是您的课程。

Get a list of students in specific course: /courses/<code>/<section>/students OR /students/show?code=cs100&section=1

第一个,同上一个原因

我在最近两次 PyCon 会议上进行了 REST API 演讲,如果您想了解更多,请随时查看API 设计最佳实践: