gpt4 book ai didi

rest - 通过 REST 服务进行批处理

转载 作者:行者123 更新时间:2023-12-03 22:48:17 27 4
gpt4 key购买 nike

是否有通过 REST 对 POST、PUT、PATCH 动词执行 BATCH 操作的最佳实践?
我所遵循的当前范例是在正文中为所有 3 个操作指定了 JSON 有效负载:
a) POST 返回创建资源的位置
b) PUT/PATCH 如果更新成功则返回 201
对于批处理操作,我打算在有效负载正文中接受 JSON 对象的集合,但我试图弄清楚要返回给客户端的内容。
在处理批处理时,某些项目的操作可能会成功,但其他项目可能会失败。
考虑到这一点,我认为最好的办法是返回一个对象集合,指示有效负载中每个项目的成功/失败状态。
但这偏离了我在上面 (a) 和 (b) 中概述的范式。
相反,将表示批处理操作本身的 ID 的标识符返回给客户端是否有意义?
然后,客户端将发出后续 GET 以获取其请求的操作的结果。
这种方法听起来合理吗?如果是这样,如果操作尚未完成,在后续 GET 上阻止客户端是否有意义,或者始终返回最新状态是否有意义,即客户端请求处理的每个项目的响应集合.
想法/想法/建议?
由于 REST 是一种架构风格,没有必要明确的“指导方针”,也没有
关于 HTTP 动词的 Action 应该如何实现的授权,显然这里没有正确或错误的答案。
我正在寻找一种优雅、自然和直观的解决方案。

最佳答案

从外部看,REST 操作应该是原子的。也就是说,如果请求的一部分失败,那么服务器的整个状态应该恢复到请求前状态并返回 4xx 或 5xx 响应(因此,例如,如果第一次失败了)。然而,这与批处理操作本身无关——这样的请求可以是任何类型的请求。

批处理操作违反了不同的 REST 约束,即统一接口(interface)的约束(由 HTTP 的方法及其对指定 URL 的资源的操作定义)。

如果您想进行批处理操作,请放弃尝试调用您的 API RESTful,因为您已经失去了 REST 所带来的好处,并且只是在欺骗自己。

如果您想保留这些好处,请放弃批处理操作。

关于rest - 通过 REST 服务进行批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23285496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com