vue用axios发送json数据 400 Bad Request的解决

问题描述

刚开始学SpringBoot + vue.js前后端分离开发的模式。

写了个demo,前端以JSON格式将参数数据传到后端,后端用==@RequestBody==注解接收。vue代码如下

postJsonRequest = (config) => {
    return axios({
      method:'post',
      url:config.url,
      headers:{'Content-Type':'application/json;charset=UTF-8'},
      params:JSON.stringify(config.params)
    });
  }

F12中看到请求的== Content-Type==没有设置成功,所以传到后端的不是JSON数据导致报错。
vue用axios发送json数据  400 Bad Request的解决

解决方案

在网上收集资料后发现。原来是因为data为空,content-length为0,此时content-type不生效(可能是考虑到优化的问题)。

因此,把axios方法中的params改成data就可以了,修改完代码如下:

postJsonRequest = (config) => {
    return axios({
      method:'post',
      url:config.url,
      headers:{'Content-Type':'application/json;charset=UTF-8'},
      data:JSON.stringify(config.params)
    });
  }

重新访问,成功调用接口。
vue用axios发送json数据  400 Bad Request的解决
可以看到,请求参数为json格式,并且请求消息头里Content-Type也设置生效了。

上一篇:Python操作MySQL -即pymysql/SQLAlchemy用法


下一篇:Python使用functools模块中的partial函数生成偏函数