我想知道当订单是资源时,为以下场景创建 REST API 的最佳实践是什么:
• 是否可以将单个 GET 路由用于所有这些场景?
• 或者我们应该为这些场景设置单独的路由?
任何帮助将非常感激!! (如果重要,则使用 Express 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/