繁体   English   中英

带有可能需要的对象字段的 Spring 启动 RequestBody

[英]Spring boot RequestBody with object fields that could be needed

如何让我的 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);    
}

这将使您的参数完全或部分可选。 即您作为参数接收的对象的任何成员,可能存在或不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM