我正在努力弄清楚批量端点的约定(HTTP 方法、HTTP 状态、响应)应该是什么样子,该端点执行所有这三个操作 - 根据实际元素创建/更新/删除。
基本上,我发送一些元素的集合,然后业务逻辑确定是否应该创建一个全新的对象、更新现有对象或删除一个对象。
问题是:
/batch
至于回复,我目前返回的内容如下:
{
"data": {
"createdAttributes": [{...}],
"deletedAttributes": [<id>, <id>, <id>],
"updatedAttributes": [{...}, {...}]
}
}
但我觉得这有点反模式,因为我在任何地方都没有见过这样的东西。 如果有任何建议,我将不胜感激。
我应该使用什么 HTTP 方法?应该是 POST/PATCH 吗?
发布。 POST 是我们的通用 HTTP 方法:
POST方法请求目标资源处理请求中包含的表示根据资源自己的特定语义 (强调)
PATCH 不适合远程创作场景之外(即:请求正文是补丁文档,如 json-patch 或 merge-patch,描述一组应应用于资源的服务器副本的编辑)。
对于此类批量端点是否有标准化的命名约定?现在我只添加 /batch
REST 并不关心您对资源标识符使用的拼写约定。
更困难的问题是确定资源模型中的哪个资源应该是请求目标。拥有专门处理此请求的特定资源是很好,但可能会错过利用 HTTP 缓存无效语义的机会。
(换句话说,存在权衡,您应该理解和评估)
响应应该是什么样的?
与任何其他 POST 请求相同;如果请求成功处理,则返回 200(通常),其响应内容总结“操作的状态或从该操作获得的结果”。如果不成功,如果问题归因于请求,则返回 4xx 响应;如果服务器出现问题,则返回 5xx 响应,无论哪种情况,都带有“包含错误情况解释的表示”。