api - Flask REST api 资源 URL 建议

标签 api rest flask url-routing restful-url

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

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

获取有限制的类(class)列表:/courses/<int:lim>/courses/list?lim=10
获取特定类(class):/courses/<code>/<section>/courses/show?code=cs100&section=1
获取特定类(class)的学生列表:/courses/<code>/<section>/students/students/show?code=cs100&section=1
我应该使用 / 还是通过 ? 传递查询参数

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

最佳答案

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

所以关于你的具体问题:

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



没有一个。使用/courses?lim=10 .无需/list组件,这是一个 Action ,而不是资源。

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



首先。再次,/courses/show表示操作,您希望 URL 成为资源的链接,在这种情况下是您的类(class)。

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



第一个,和上一个原因一样。

我在最近两次 PyCon session 上进行了 REST API 演讲,如果您想了解更多 API 设计最佳实践,请随时查看:
  • PyCon 2014:Writing RESTful Web Services with Flask
  • PyCon 2015:Is Your REST API RESTful?
  • 关于api - Flask REST api 资源 URL 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29704812/

    相关文章:

    api - 使用 Flutter 和 Dart 进行翻译

    c# - 应该首选哪个依赖注入(inject)生命周期?

    json - 使用 swift 4.1 调用 web api(通用处理程序 api)

    jquery - 通过 AJAX 调用 BigCommerce API 时出现 401 错误

    javascript - Adonis api 邮件无法正常工作(adonis install @adonisjs/mail)

    python - 如何计算 SQL 行并使用 FLASK 将其存储在变量中,而不总是得到 1 作为答案?

    spring - Bean 引用被 [com.sun.proxy.$Proxy159] 类型的不兼容 bean 实例覆盖

    java - 如何在scala akka(spray)中编写休息服务的测试用例

    python - 有或没有蓝图的两种语言 Flask 网站

    python - 如何使用 Flask/SQLAlchemy 将返回结果的数量限制为仅 1000 个最新条目?