Postman无法向Spring应用传递@RequestParams,手动输入URL却正常
问题诊断与解决方案
核心问题分析
你遇到的问题源于两个关键错误:
- 请求路径不匹配:代码中
@GetMapping映射的路径是/api/public/categories,但实际请求的URL是http://localhost:8080/api/public/products,路径不一致导致请求未命中目标方法,只能读取参数默认值。 - 参数名格式不规范:
@RequestParam的name属性包含空格(Page size)和大小写混合命名(Page_number、Sortfield),GET请求参数名对大小写敏感,Postman中参数名若与注解name不完全匹配,Spring无法正确绑定参数,会自动使用默认值。
具体修复步骤
1. 统一请求路径
将方法映射路径修正为实际请求的路径,或调整请求URL匹配方法路径:
// 若实际请求是/products,修改@GetMapping路径 @GetMapping("/api/public/products") public ResponseEntity<CategoryResponse> getallcategories( // 其余参数不变 ) { // 方法逻辑不变 }
2. 规范参数名并保持匹配
修改@RequestParam的name为无空格、大小写统一的格式(推荐小写加下划线),同时在Postman的Params标签中使用完全一致的参数名:
@GetMapping("/api/public/products") public ResponseEntity<CategoryResponse> getallcategories( @RequestParam(name = "page_number", defaultValue = Appconstants.PAGE_NUMBER, required = false) Integer pagenumber, @RequestParam(name = "page_size", defaultValue = Appconstants.PAGE_SIZE, required = false) Integer pgsize, @RequestParam(name = "sort_field", defaultValue = Appconstants.SORT_CATEGORIES_BY, required = false) String sortby, @RequestParam(name = "sort_order", defaultValue = Appconstants.SORT_DEFAULT, required = false) String sortorder ) { return new ResponseEntity<>( cate.getallcategories(pagenumber, pgsize, sortby, sortorder), HttpStatus.OK ); }
在Postman的Params标签中填写与上述name完全一致的参数:
page_number:分页页码page_size:分页大小sort_field:排序字段sort_order:排序顺序
3. Postman参数传递验证
确保Postman中选择GET请求后,在Params标签下添加参数,不要在Body中传递(GET请求参数应放在URL查询串中,Body通常不用于GET请求参数传递)。
内容的提问来源于stack exchange,提问作者Fitz chivalry farseer
相关产品推荐
相关产品推荐

