spring boot 2.0 参数绑定好像不一样了

2018-07-18 14:57:30 +08:00
 shazh520

我这几天在研究 spring boot 2.0,但是 webflux 还没开始写就遇到了这个问题,很费解。先给你们看看代码:

@PostMapping("/save")
public String save(@RequestParam String name) {
  User user = new User();
  user.setName(name);
  userRepo.save(user);
  return "用户保存成功";
}

然后我用 postman 测试的时候,明明传了参数“ name ”但是依旧是显示

{
  "timestamp": "2018-07-18T06:55:07.879+0000",
  "path": "/user/save",
  "status": 400,
  "error": "Bad Request",
  "message": "Required String parameter 'name' is not present"
}

form-data 和 x-www-form-urlencoded 都不行,这是咋咧? 前辈赐教

3246 次点击
所在节点    Java
15 条回复
darkblood
2018-07-18 15:18:26 +08:00
spring 不熟 requestparam 是不是取的 querystring
zuishuaidenage
2018-07-18 17:30:55 +08:00
我估计是由于你用的 post 然后 RequestParam 取不到 你把 RequestParam 去掉试试
acrisliu
2018-07-18 17:33:01 +08:00
试试 url/save?name=param
wdlth
2018-07-18 21:07:55 +08:00
有可能是 Postman 的锅,我遇到过复制进去的 field 不提交的 BUG
还有设置 application/x-www-form-urlencoded 头再试试
jack80342
2018-07-18 22:06:43 +08:00
最近翻译了最新的 Spring boot 官方文档,欢迎反馈🙃,https://www.gitbook.com/book/jack80342/spring-boot/details
azygote
2018-07-18 22:29:12 +08:00
POST 的话不需要 @RequestParam 的吧
AlisaDestiny
2018-07-18 22:52:07 +08:00
@jack80342 感谢你的贡献,已 CTRL+D。
wleexi
2018-07-18 22:56:07 +08:00
PSOTMAN 把请求参数放在请求体内,自然 400 了
johnniang
2018-07-18 23:18:11 +08:00
既然是 post,为何不直接传{'name': '...'},然后接收 User user
chocotan
2018-07-18 23:34:37 +08:00
同样代码测试无问题,楼主抓个包看看,今天我同事的 postman 的 url 编码就出了问题
---
POST 和 GET 都可以用 @RequestParam
hduwillsky
2018-07-19 08:00:44 +08:00
RequestParam 是 query param
beginor
2018-07-19 08:02:16 +08:00
@jack80342 star+1
Malthael
2018-07-19 09:16:47 +08:00
你 postman 是怎么传参数的? post 方式 @RequestBody 和 @RequestParam 传参方式是不一样的
nita22
2018-07-19 10:05:39 +08:00
可以尝试用 axios 或者 jquery 的 ajax,自己发一个请求到你的 controller 看看。目测是 postman 的问题
shazh520
2018-07-20 15:29:24 +08:00
哈哈,postman 背锅

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471989

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX