Postman测试Spring Boot管理员登录接口失败的解决方法
问题根因
代码不生效的核心问题是@RequestBody注解使用错误:
@RequestBody的作用是将HTTP请求的完整JSON请求体反序列化为Java对象,一个接口方法只能标注一个@RequestBody参数,因为请求的输入流仅能读取一次。- 你当前给
userId参数加了@RequestBody,会把Postman传入的完整JSON串(例如{"userId":"admin","password":"root"})全量赋值给userId变量,而password参数Spring会默认从URL查询参数、表单参数中解析,JSON体里的password值根本不会被绑定,实际拿到的password是null,校验逻辑永远无法通过,甚至会触发空指针异常。 - 你已经定义了
Login实体类,直接用该实体接收完整登录参数即可,不需要拆分两个参数单独接收。
修复方案
1. 修改Login Controller代码
将接口参数调整为用Login实体接收请求体,修正后的代码如下:
@RequestMapping(value="/", method = RequestMethod.GET) public String loginPage() { return "Welcome to ABC Bank login page"; } @PostMapping(value="/login", consumes = "application/json", produces ="application/json") public String display(@RequestBody Login loginRequest){ System.out.println("userId: " + loginRequest.getUserId()); // 常量写在equals前面,避免入参为空触发空指针 if("admin".equals(loginRequest.getUserId()) && "root".equals(loginRequest.getPassword())) { return "Welcome to ABC Bank"; }else { return "Login UnSuccessful "; } }
2. Postman测试配置要求
- 请求方法选择
POST,请求地址填写为你的服务实际部署地址+/login路径 - 请求头添加
Content-Type: application/json - 请求体选择
raw格式,右侧类型下拉选JSON,传入以下内容:
{ "userId": "admin", "password": "root" }
配置完成后发送请求,即可正常得到Welcome to ABC Bank的成功响应。
内容的提问来源于stack exchange,提问作者Vivek_CG
相关产品推荐
相关产品推荐

