【发布时间】:2019-08-22 08:11:23
【问题描述】:
这个问题主要是关于如何设计一个 rest API 和什么是最佳实践。我正在尝试找出 POST 服务的 REST 端点,请考虑以下示例代码:
class Person {
String name;
@OneToMany
List<Address> addresses;
}
class Address {
String someAttribute;
@ManyToOne
Person person;
}
要添加一个新的Address,其余端点可能类似于POST api/**v1**/address。主要问题在于RequestBody,因为我们只有Person 的id,所以我们需要像下面这样传递json:
{
"someAttribute": "someValue"
"personId": 1
}
在Controller 方法中,我们不能简单地使用@RequestBody Address address 作为Rest 端点方法的参数,因为Address 类中没有personId。
我想了解这里的最佳做法是什么以及 Rest 端点应该如何?
PS:上面的代码是一个虚拟代码,只是为了方便解释问题。
更新
为避免混淆,我更新了端点 url。
【问题讨论】:
-
api/1/address中的数字 1 指的是 WITHID = 1的人 -
@SpringerF
1是api版本。 -
所以在这里您必须将 id 作为路径参数传递并正确发送地址,否则如果您想尊重架构,您必须将人员作为对象发送到地址(获取所有人员信息作为人员键)
标签: spring rest post spring-restcontroller many-to-one