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

Spring Boot应用接收name参数失败:提示参数不存在且移除@RequestParam后值为Null求助

嘿,我来帮你搞定这个Spring Boot参数接收的问题!你遇到的Required String parameter 'name' is not present错误,大概率是参数传递的位置不对,结合你的代码和场景,我给你分析几个常见原因和解决办法:

1. 最可能的原因:GET请求的参数传错位置了

你的接口用的是@GetMapping,而@RequestParam默认是从**URL的查询参数(Query Params)**里取值的,但很多人会不小心把参数放到Postman的Body标签里(比如form-data/raw格式)——这对GET请求来说是无效的,因为GET请求的Body通常会被服务器忽略。

正确操作步骤:

  • 在Postman里打开你的请求,切换到Params标签页
  • 添加一行参数:Key填name,Value填你要测试的内容(比如"牛奶")
  • 点击Send,此时你会看到URL自动变成类似http://localhost:8080/searchProducts?name=牛奶,这样控制器就能正确拿到参数了!

你也可以直接手动在URL末尾拼接参数测试,比如访问http://localhost:8080/searchProducts?name=面包,看看控制台能不能打印出"面包",这样能快速排除Postman操作的问题。

2. 检查参数名的拼写/大小写

确认Postman里的参数Key和代码里的name完全一致——Spring Boot默认是区分大小写的,如果你在Postman里写成Name或者NAME,控制器是识别不到的,自然会提示参数不存在。

3. 为什么去掉@RequestParam还是null?

这其实也印证了参数根本没传到控制器里。如果参数是正确放在Query Params里的,即使去掉@RequestParam注解,只要方法参数名和URL参数名一致,Spring Boot会自动帮你注入值(前提是你没修改过参数绑定的严格配置)。所以这种情况更说明参数传递的位置不对。

额外提醒:GET请求别用Body传参数

虽然有些工具允许给GET请求加Body,但这不符合REST规范,而且大部分后端框架(包括Spring Boot)都会忽略GET请求的Body内容。如果你的业务场景确实需要在请求体里传参数,建议把接口改成@PostMapping,然后配合@RequestBody或者@RequestParam(根据Content-Type选择)来接收参数。

内容的提问来源于stack exchange,提问作者Aloïs Coussout

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:42:40