V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shazh520
V2EX  ›  Java

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

  •  
  •   shazh520 · 2018-07-18 14:57:30 +08:00 · 3428 次点击
    这是一个创建于 2319 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我这几天在研究 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 都不行,这是咋咧? 前辈赐教

    15 条回复    2018-07-20 15:29:24 +08:00
    darkblood
        1
    darkblood  
       2018-07-18 15:18:26 +08:00 via Android
    spring 不熟 requestparam 是不是取的 querystring
    zuishuaidenage
        2
    zuishuaidenage  
       2018-07-18 17:30:55 +08:00
    我估计是由于你用的 post 然后 RequestParam 取不到 你把 RequestParam 去掉试试
    acrisliu
        3
    acrisliu  
       2018-07-18 17:33:01 +08:00
    试试 url/save?name=param
    wdlth
        4
    wdlth  
       2018-07-18 21:07:55 +08:00
    有可能是 Postman 的锅,我遇到过复制进去的 field 不提交的 BUG
    还有设置 application/x-www-form-urlencoded 头再试试
    jack80342
        5
    jack80342  
       2018-07-18 22:06:43 +08:00   ❤️ 2
    最近翻译了最新的 Spring boot 官方文档,欢迎反馈🙃,https://www.gitbook.com/book/jack80342/spring-boot/details
    azygote
        6
    azygote  
       2018-07-18 22:29:12 +08:00
    POST 的话不需要 @RequestParam 的吧
    AlisaDestiny
        7
    AlisaDestiny  
       2018-07-18 22:52:07 +08:00
    @jack80342 感谢你的贡献,已 CTRL+D。
    wleexi
        8
    wleexi  
       2018-07-18 22:56:07 +08:00
    PSOTMAN 把请求参数放在请求体内,自然 400 了
    johnniang
        9
    johnniang  
       2018-07-18 23:18:11 +08:00 via Android
    既然是 post,为何不直接传{'name': '...'},然后接收 User user
    chocotan
        10
    chocotan  
       2018-07-18 23:34:37 +08:00
    同样代码测试无问题,楼主抓个包看看,今天我同事的 postman 的 url 编码就出了问题
    ---
    POST 和 GET 都可以用 @RequestParam
    hduwillsky
        11
    hduwillsky  
       2018-07-19 08:00:44 +08:00 via iPhone
    RequestParam 是 query param
    beginor
        12
    beginor  
       2018-07-19 08:02:16 +08:00 via Android
    @jack80342 star+1
    Malthael
        13
    Malthael  
       2018-07-19 09:16:47 +08:00
    你 postman 是怎么传参数的? post 方式 @RequestBody 和 @RequestParam 传参方式是不一样的
    nita22
        14
    nita22  
       2018-07-19 10:05:39 +08:00
    可以尝试用 axios 或者 jquery 的 ajax,自己发一个请求到你的 controller 看看。目测是 postman 的问题
    shazh520
        15
    shazh520  
    OP
       2018-07-20 15:29:24 +08:00
    哈哈,postman 背锅
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2549 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.