java - @RequestBody 使用多个参数
问题描述
以前可能已经问过这个问题,但是我一生都无法使用我可以在网上找到的类似示例来整理我对 spring 注释的理解。
我有一个发布方法:
@PostMapping(value = "/changeFriendName", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> changeFriendName(@RequestBody Friend friendNameToChange, @RequestBody String inputName){
System.out.println(friendNameToChange.getName());
return new ResponseEntity<>("Hello " +friendNameToChange.getName() + ", lets change to = " + inputName, HttpStatus.OK);
}
在哪里:
public class Friend {
//@NotNull
String name;
//LocalDateTime lastContact;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
试图得到一些理解,所以要保持简单。
一旦我有第二个输入参数,我似乎无法理解如何使用邮递员创建 JSON 有效负载以获得 OK 响应。
我有很多东西,最新的有效载荷:
{
"object":{
"name":"roberto"
},
"string":"dave"
}
我似乎无法理解如何从有效负载中解析 POJO。
在此先感谢您的帮助!
解决方案
我不相信你可以声明多个@RequestBody
参数。您将需要创建一个将两者结合起来的新课程;例如,
public class RequestDto {
private Friend friend;
private String inputName;
// ... getters, setters ...
}
然后你可以做
@PostMapping(value = "/changeFriendName", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> changeFriendName(@RequestBody RequestDto requestDto){
return new ResponseEntity<>(
"Hello " + requestDto.getFriend().getName() + ", lets change to = " + requestDto.getInputName(),
HttpStatus.OK);
}
推荐阅读
- c++ - std::bind 如何按值获取可变参数,即使是通用引用?
- circleci - CircleCi 如何获取合并分支的名称?
- python - 如何根据数据框中的不同行值将标签分配给新列?
- regex - 正则表达式匹配特殊字符
- firebase - 如何添加 Flutter Firebase VIdeo Upload Progrese Indecator | 上传进度指示器 |
- python - 循环遍历目录中的多个文件并保存到不同工作表中的单个 excel 文件中
- r - R twitterwidget 包 - 更新闪亮输入时未清除推文
- microsoft-graph-api - Microsoft Graph 待办事项 API 返回状态代码 500
- reactjs - 如何检查访问令牌是否在反应中过期
- javascript - ES6:将对象推入数组返回数组长度。如何将其存储为 sessionStorage 中的对象数组