You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:06:18