Spring项目updateUser接口如何在Postman中正确传递请求参数
400报错根因
你当前Controller层的参数绑定写法错误:@RequestBody注解默认会把整个请求体的JSON内容映射到它修饰的参数上,你现在只给第一个int id参数加了这个注解,框架尝试把整个JSON对象转为int类型,类型不匹配直接抛出解析错误,就返回400。
正确实现步骤
第一步:调整后端代码
你需要先把三个接收参数封装成一个DTO对象,再用@RequestBody修饰整个DTO:
- 新建参数接收类:
public class UserUpdateDTO { private int id; // 要修改的字段名 private String parameter; // 修改后的新值 private String updateToBe; // 这里要补充所有字段的getter、setter方法 }
- 修改Controller层方法:
public void updateUser(@RequestBody UserUpdateDTO updateDTO) { service.updateUser(updateDTO.getId(), updateDTO.getParameter(), updateDTO.getUpdateToBe()); }
第二步:Postman请求体参数
调整完成后,请求体的JSON需要传入三个字段:
{ "id": 1, "parameter": "password", "updateToBe": "1234" }
各字段说明:
id:需要修改的用户IDparameter:要修改的字段标识,可选值为mail/phone_no/password,大小写不敏感updateToBe:修改后的目标值,注意如果parameter传phone_no,这个值要填可以转为整数的字符串,否则会报数字格式化错误
临时替代方案(不用新建DTO)
如果你不想新增DTO类,也可以把参数都改为请求参数传递,修改Controller为:
public void updateUser(@RequestParam int id, @RequestParam String parameter, @RequestParam String updateToBe) { service.updateUser(id, parameter, updateToBe); }
此时不需要在Postman的请求体里填内容,直接在Params栏填写三个参数的键值对即可请求成功。
内容的提问来源于stack exchange,提问作者Raeroxx
相关产品推荐
相关产品推荐

