我想了解解决以下问题的正确的请求/响应结构和API设计。 我有2个实体,可以说Abc和Xyz。 Xyz具有Abc的外键。 因此,要为Xyz创建记录,必须映射Abc记录。
现在从请求结构的角度来看,我需要为Abc创建一个POST请求,就像
POST /Abc
这非常简单。但是问题出在Xyz。 要求是每当有用户来创建Xyz时,他也可能会请求更新附加的Abc记录。 例如, 我已经为ID为5的Abc创建了一条记录。现在,每当我要创建相应的Xyz记录时,我都将请求更新ID为5的Abc记录并为此外键创建一个新的Xyz记录。 所以, 补丁/ Abc 和 开机自检/ Xyz 但是客户端只请求一次,并在单个URI上共享全部数据。
那么,在单个URI上处理多个HTTP方法的正确方法是什么? 我应该创建POST请求还是PATCH?
我无法创建2个请求,因为客户端希望此过程具有事务性。
答案 0 :(得分:0)
首先我想你应该这样想
我无法创建2个请求,因为客户端希望此过程具有事务性。
以另一种方式。正如我所看到的,对事务的需求可能只是意味着-我对此可能非常错,因此请找出真相-当对Abc
进行更新时,创建新Xyz
的过程就是与更新Abc
有关。因此,如果Xyz
的更新失败(反之亦然)并且返回了一些错误,则不会创建Abc
。
因此,您也许可以创建两个端点:
Xyz
Xyz
并同时以事务方式更新Abc
的因此,您也许可以创建两个端点。这里更有趣的是后者是 POST 还是 PATCH ?似乎两者兼而有之。
但是,例如-this question & accepted answer,大约有 PATCH :
PATCH方法请求将请求实体中描述的一组更改应用于由Request-URI标识的资源
现在,以下问题是由请求URI标识的更改过的Abc
?如果不是这样的话-据我了解-是 POST 。
这意味着您只需要一个 POST 端点即可检查是否有必要,是否需要交易更新ID。但也许最好有单独的端点。