SpringBoot拿不到POST方式的wx.request?

小程序端代码

 wx.request({
      url: 'xxxx'
      data: {
        studentId: e.detail.value.no,
        password: e.detail.value.pwd
      },
      method:'POST',
      header: {
        'content-type': 'application/json' // 默认值
      },
      ...
      ...

controller的代码

@PostMapping("xxxx")
    @ResponseBody
    public JsonResult Login(@RequestParam studentId,@RequestParam password) {
    	...
    	...
    }

小程序发出请求,但是后台拿不到…查了一下发现

GET、POST方式提时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理

所以有两个解决方式

  1. 将小程序端的 ‘content-type’ 改为’application/x-www-form-urlencoded’,即
wx.request({
      url: 'xxxx'
      data: {
        studentId: e.detail.value.no,
        password: e.detail.value.pwd
      },
      method:'POST',
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
  1. 或者是 Controller 用@RequestBody 接受参数,小程序还是’content-type’: 'application/json’不变,即
 public JsonResult Login(@RequestBody Map<String, String> req) {
        String studentId = req.get("studentId");
        String password = req.get("password");
        ...
        ...

 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值