RESTAPI设计:在哪里创建依赖于其他资源的资源?
如果我有两个资源,其中一个是从另一个创建的,那么我应该将创建端点放在哪里 例如: 我有两个资源,A和B,我想创建一个B B是一个简单的类,它引用a和创建它的用户,如下所示RESTAPI设计:在哪里创建依赖于其他资源的资源?,rest,restful-architecture,hateoas,Rest,Restful Architecture,Hateoas,如果我有两个资源,其中一个是从另一个创建的,那么我应该将创建端点放在哪里 例如: 我有两个资源,A和B,我想创建一个B B是一个简单的类,它引用a和创建它的用户,如下所示 public class B { private A a; private User user; } 用户信息是通过HTTP请求隐式发送的,因此我不需要任何参数 解决方案1: 将不带任何参数的帖子发送到/a/123/B并返回B。这意味着A的控制器负责创建B。感觉很奇怪 解决方案2: 将id为123的帖子发送到
public class B {
private A a;
private User user;
}
用户信息是通过HTTP请求隐式发送的,因此我不需要任何参数
解决方案1:
将不带任何参数的帖子发送到/a/123/B
并返回B
。这意味着A的控制器负责创建B。感觉很奇怪
解决方案2:
将id为123的帖子发送到/B
。这意味着如果存在id为123的A,我必须在控制器中检查B。感觉也很奇怪
两种解决方案的优缺点是什么?我是否过度考虑了API设计?您需要清楚依赖性 A是由B组成的吗?换句话说,B是否存在于范围之外
POST ./B
DELETE./a/{id}
,则B
会发生什么情况
POST ./A/{id}/B
说到控制器,没有什么能强迫你从另一个控制器管理B。REST的全部要点是,调用不是控制器的地址,而是资源的地址。您正在创建的资源独立于控制器。感谢您清晰明了的解释!