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§ion=1
获取特定课程的学生列表:
/courses/<code>/<section>/students
或 /students/show?code=cs100§ion=1
我应该使用 /
还是 ?
来传递查询参数
我使用 /
的唯一原因是查询没有冲突。
如果我有这两个 URL 用于两个不同的查询,我该如何修复它以便我可以根据参数进行查询:
/students/show?code=cs100§ion=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§ion=1
第一个。再一次,/courses/show
表示一个动作,您希望 URLs 是指向资源的链接,在本例中是您的课程。
Get a list of students in specific course: /courses/<code>/<section>/students
OR /students/show?code=cs100§ion=1
第一个,同上一个原因
我在最近两次 PyCon 会议上进行了 REST API 演讲,如果您想了解更多,请随时查看API 设计最佳实践:
- PyCon 2014:Writing RESTful Web Services with Flask
- PyCon 2015:Is Your REST API RESTful?
我正在研究 REST Api 起诉 Python Flask,因为我有越来越多的路由,很难管理所有资源 url。
现在,我很困惑哪个是 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
(获取具体学生)
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§ion=1
第一个。再一次,/courses/show
表示一个动作,您希望 URLs 是指向资源的链接,在本例中是您的课程。
Get a list of students in specific course:
/courses/<code>/<section>/students
OR/students/show?code=cs100§ion=1
第一个,同上一个原因
我在最近两次 PyCon 会议上进行了 REST API 演讲,如果您想了解更多,请随时查看API 设计最佳实践:
- PyCon 2014:Writing RESTful Web Services with Flask
- PyCon 2015:Is Your REST API RESTful?