【发布时间】:2020-11-05 11:24:52
【问题描述】:
我正在构建一个 REST API,但我不太确定表示生成数据的端点的正确方法是什么。假设资源是关于“项目”的,我有通常的端点:
- GET /items => 列出项目
- POST /items => 创建一个新项目
- GET /items/{id} => 获取现有项目
- PUT /items/{id} => 更新现有项目
- DELETE /items/{id} => 删除现有项目
现在,我还有一个进程,可以根据系统中的一些参数或配置生成物品。使用 REST 定义此端点的正确方法是什么?
我也很想使用 POST /items 但是这个已经被用来创建一个“单个”新项目。有时使用是正确的:
- POST /items?from=2020-07-15&to=2020-07-21 for with no body => 这会创建一个项目列表
- POST /items 在正文中有一个项目 => 这会创建一个项目
感谢您的意见!
【问题讨论】:
-
感谢@dbaltor 的建议。我的问题更倾向于基于有效负载或查询参数让相同的端点行为不同是否“正确”REST 方式。
-
欢迎。我相信 POST 是唯一的方法,因为您的请求不会是幂等的。然而,HTTP 动词和 URI 并不是唯一需要考虑的东西。处理(原子或非原子,同步或异步)以及使用正确代码(200、202 或 400)的相应响应也至关重要。这就是为什么我向您推荐一个全面回复的链接。
标签: rest