同时创建和更新资源时应选择PATCH还是POST请求方法?
该场景建议使用
POST 请求方法 核心判断依据如下:
- 你的接口核心主操作是创建一笔新的支付交易记录,买卖双方账户余额变更是交易创建成功后触发的关联副作用,并非接口的核心操作目标。RESTful 方法选择优先匹配主操作属性,创建新资源的主诉求完全符合
POST的适用范围。 PATCH方法的适用前提是操作对象为「单个已存在的资源」,仅用于对该资源做局部属性更新,你当前的场景既没有以某个已存在资源作为单一操作目标,核心诉求也不是局部更新,完全不符合PATCH的使用规范。- 从幂等性要求来看,支付操作本身不具备幂等性:重复提交相同请求会生成多笔交易、导致多次资金划转。而
PATCH是幂等方法,要求多次提交相同请求的最终效果和提交一次完全一致,显然和支付场景的特性冲突,POST作为非幂等方法更匹配该场景。 - 接口最终返回新生成的
Transaction对象,也完全符合POST方法创建资源后返回新资源信息的通用设计惯例。
额外设计提示:如果后续有针对已生成的交易做局部状态更新的需求(比如标记交易退款完成、超时关闭),那时操作目标是单个已存在的
Transaction资源,才适合使用PATCH方法。
内容的提问来源于stack exchange,提问作者Jam
相关产品推荐
相关产品推荐

