shazh520
V2EX  ›  Java

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

  •  
  •   shazh520 · Jul 18, 2018 · 4661 views
    This topic created in 3034 days ago, the information mentioned may be changed or developed.

    我这几天在研究 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 replies  •  2018-07-20 15:29:24 +08:00
    darkblood
    darkblood
    Jul 18, 2018 via Android
    1
    spring 不熟 requestparam 是不是取的 querystring
    zuishuaidenage
    zuishuaidenage
    Jul 18, 2018
    2
    我估计是由于你用的 post 然后 RequestParam 取不到 你把 RequestParam 去掉试试
    acrisliu
    acrisliu
    Jul 18, 2018
    3
    试试 url/save?name=param
    wdlth
    wdlth
    Jul 18, 2018
    4
    有可能是 Postman 的锅,我遇到过复制进去的 field 不提交的 BUG
    还有设置 application/x-www-form-urlencoded 头再试试
    jack80342
    jack80342
    Jul 18, 2018❤️2
    5
    最近翻译了最新的 Spring boot 官方文档,欢迎反馈🙃,https://www.gitbook.com/book/jack80342/spring-boot/details
    azygote
    azygote
    Jul 18, 2018
    6
    POST 的话不需要 @RequestParam 的吧
    AlisaDestiny
    AlisaDestiny
    Jul 18, 2018
    7
    @jack80342 感谢你的贡献,已 CTRL+D。
    wleexi
    wleexi
    Jul 18, 2018
    8
    PSOTMAN 把请求参数放在请求体内,自然 400 了
    johnniang
    johnniang
    Jul 18, 2018 via Android
    9
    既然是 post,为何不直接传{'name': '...'},然后接收 User user
    chocotan
    chocotan
    Jul 18, 2018
    10
    同样代码测试无问题,楼主抓个包看看,今天我同事的 postman 的 url 编码就出了问题
    ---
    POST 和 GET 都可以用 @RequestParam
    hduwillsky
    hduwillsky
    Jul 19, 2018 via iPhone
    11
    RequestParam 是 query param
    beginor
    beginor
    Jul 19, 2018 via Android
    12
    @jack80342 star+1
    Malthael
    Malthael
    Jul 19, 2018
    13
    你 postman 是怎么传参数的? post 方式 @RequestBody 和 @RequestParam 传参方式是不一样的
    nita22
    nita22
    Jul 19, 2018
    14
    可以尝试用 axios 或者 jquery 的 ajax,自己发一个请求到你的 controller 看看。目测是 postman 的问题
    shazh520
    shazh520
    OP
    Jul 20, 2018
    15
    哈哈,postman 背锅
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   750 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 23:03 · PVG 07:03 · LAX 15:03 · JFK 18:03
    ♥ Do have faith in what you're doing.