路由的 REST API 最佳实践

标签 rest api express server

我想知道当订单是资源时,为以下场景创建 REST API 的最佳实践是什么:

  • 获取数据库中的所有订单。 (肯定不是实际场景,仅供理解)
  • 通过订单 ID 获取订单。
  • 通过订单 ID 获取单个订单

  • • 是否可以将单个 GET 路由用于所有这些场景?

    • 或者我们应该为这些场景设置单独的路由?

    任何帮助将非常感激!! (如果重要,则使用 E​​xpress JS 框架)

    最佳答案

    RESTful API 使用 HTTP 方法作为动词。这意味着将使用相同的端点来获取订单列表并创建一个新的订单;或获得一个特定的订单,更新它或事件删除它。

    考虑到这一点,您可以按如下方式设计 API 结构:

    GET       /orders        // To get a list of all orders
    GET       /orders/:id    // To get information about a specific order
    

    这将帮助您轻松添加更多方法,而无需更改 API 设计:
    POST     /orders         // To create a new order
    PUT      /orders/:id     // To update that specific order
    DELETE   /orders/:id     // To delete it
    

    如果您想在端点上添加搜索功能,使用查询字符串是很常见的。举些例子:
    GET   /orders?email=john@example.org  // To retrieve all orders from that customer
    GET   /orders?limit=10                // To retrieve only 10 hits per results
    GET   /orders?limit=10&total=99.99    // To retrieve top 10 orders with a total of 99.99
    

    您可以添加专用搜索参数以按 ID 返回订单(按要求),但这并不常见,因为您已经可以使用端点 /orders/:id 按 ID 进行查询。 .您可能会考虑在此处避免额外的请求,但一般而言,性能提升非常低 - 除非您的应用程序通过 ID 检索多次点击对您的应用程序至关重要。

    关于路由的 REST API 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59608660/

    相关文章:

    javascript - 单击按钮或输入搜索字段时使用新数据重绘 D3 饼图

    php - cURL 在调用 curl_exec 时挂起服务器。

    node.js - 为什么有些开发者使用 'http'和 'express'来创建服务器?

    node.js - foreman 在 Node.js 中启动时出现错误

    java - 安静服务消息未显示

    java - 如何使用 Java 下载/保存 LinkedIn 个人资料为 PDF 文件?

    node.js - 链接到其他集合项目的集合+JSON 项目

    rest - nginx - 清除 http PUT 或 POST 上的缓存

    javascript - JS - Youtube Iframe API 返回错误的当前时间和持续时间?

    javascript - Express app.use 不发送正确的假数据