我的问题与REST API设计有关。
让我们有两个具有一对多关系的对象:
@Entity
public class Company {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
@OneToMany(mappedBy = "company", cascade = CascadeType.ALL)
private Set<Product> products;
}
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
@ManyToOne
@JoinColumn(name = "company_id", nullable = false)
private Company company;
}
问题出现了,当向PATCH方法发送JSON请求时,如何更新相关记录(针对相关公司对象)以及正确的响应是什么。
下面,我将介绍可能的组合: (其中“ productIds”字段-转换为具有指定ID的产品的相应对象)
JSON请求:
{ “ productIds”:[1、2、3] }
响应:
1.1。选项1
{
"productIds": [1, 2, 3]
}
1.2。选项2
{
"products": [
{
"id": 1,
"name": "Comp1"
},
{
"id": 2,
"name": "Comp2"
},
{
"id": 3,
"name": "Comp3"
}
]
}
JSON请求:
{
“产品”:[
{
“ id”:1
},
{
“ id”:2
},
{
“ id”:3,
}
]
}
响应:
2.1。选项1
{
"products": [
{
"id": 1,
},
{
"id": 2,
},
{
"id": 3,
}
]
}
2.2。选项2
{
"products": [
{
"id": 1,
"name": "Comp1"
},
{
"id": 2,
"name": "Comp2"
},
{
"id": 3,
"name": "Comp3"
}
]
}
JSON请求:
{
“产品”:[
{
“ id”:1
“名称”:“ Comp1”
},
{
“ id”:2
“名称”:“ Comp2”
},
{
“ id”:3,
“名称”:“ Comp3”
}
]
}
响应:
3.1。选项1
{
"products": [
{
"id": 1,
"name": "Comp1"
},
{
"id": 2,
"name": "Comp2"
},
{
"id": 3,
"name": "Comp3"
}
]
}
我的问题是json结构最常用于更新链接和答案的方法。
也就是说,您可以共享最佳实践,如何执行依赖关系更新以及项目中的相应答案。