如何解决Spring Boot RequestBody带有可能需要的对象字段
如何使我的RequestBody接受包含或不包含对象字段的模型?
这是我正在呼叫的Restcontroller端点
@PatchMapping(value = "/projects/update/{projectNumber}")
public ResponseEntity<Object> updateProject(@PathVariable int projectNumber,@RequestBody RequestReviewUpdate rru)
{
return reviewUpdateService.updateReview(projectNumber,rru);
}
这是@RequestBody接受的模型
public class RequestReviewUpdate
{
private UpdateProject project;
private List<UpdateHlsd> reviews;
private List<UpdateProjectLeadership> stakeHolders;
public UpdateProject getProject()
{
return project;
}
public List<UpdateHlsd> getReviews()
{
return reviews;
}
public List<UpdateProjectLeadership> getStakeHolders()
{
return stakeHolders;
}
}
我希望能够发送可能包含所有对象字段或某些对象的JSON。
我的JSON正文可能看起来像这样...
{
"project": {
"type": "HLSD"
},"reviews": [
{
"id": 570,"requestedBy": "Name here","notes":"test"
}
],"stakeHolders": [
{
"id": 1088,"projectResource": "sid"
}
]
}
或者这个...等
{
"reviews": [
{
"id": 570,"requestedBy": "name","notes":"test"
}
}
或任何其他可能的组合。
解决方法
只需将您的RequestReviewUpdate
设置为可选,例如:
@PatchMapping(value = "/projects/update/{projectNumber}")
public ResponseEntity<Object> updateProject(@PathVariable int projectNumber,@RequestBody(required=false) RequestReviewUpdate rru) {
return reviewUpdateService.updateReview(projectNumber,rru);
}
这将使您的参数全部或部分可选。即您作为参数接收的对象的任何成员都可能存在或不存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。