REST API - 用于创建/更新/删除的批量端点

问题描述 投票:0回答:1

我正在努力弄清楚批量端点的约定(HTTP 方法、HTTP 状态、响应)应该是什么样子,该端点执行所有这三个操作 - 根据实际元素创建/更新/删除。

基本上,我发送一些元素的集合,然后业务逻辑确定是否应该创建一个全新的对象、更新现有对象或删除一个对象。

问题是:

  • 我应该使用什么 HTTP 方法?应该是 POST/PATCH 吗?
  • 对于此类批量端点是否有任何标准化的命名约定?现在我只添加
    /batch
  • 响应应该是什么样的?

至于回复,我目前返回的内容如下:

{
    "data": {
        "createdAttributes": [{...}],
        "deletedAttributes": [<id>, <id>, <id>],
        "updatedAttributes": [{...}, {...}]
    }
}

但我觉得这有点反模式,因为我在任何地方都没有见过这样的东西。 如果有任何建议,我将不胜感激。

java api rest http design-patterns
1个回答
0
投票

我应该使用什么 HTTP 方法?应该是 POST/PATCH 吗?

发布。 POST 是我们的通用 HTTP 方法:

POST方法请求目标资源处理请求中包含的表示根据资源自己的特定语义 (强调)

PATCH 不适合远程创作场景之外(即:请求正文是补丁文档,如 json-patch 或 merge-patch,描述一组应应用于资源的服务器副本的编辑)。

对于此类批量端点是否有标准化的命名约定?现在我只添加 /batch

REST 并不关心您对资源标识符使用的拼写约定。

更困难的问题是确定资源模型中的哪个资源应该是请求目标。拥有专门处理此请求的特定资源是很好,但可能会错过利用 HTTP 缓存无效语义的机会。

(换句话说,存在权衡,您应该理解和评估)

响应应该是什么样的?

与任何其他 POST 请求相同;如果请求成功处理,则返回 200(通常),其响应内容总结“操作的状态或从该操作获得的结果”。如果不成功,如果问题归因于请求,则返回 4xx 响应;如果服务器出现问题,则返回 5xx 响应,无论哪种情况,都带有“包含错误情况解释的表示”。

© www.soinside.com 2019 - 2024. All rights reserved.