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数据导致报错。
在这里插入图片描述

解决方案

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

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

postJsonRequest &
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在Vue中使用Axios传递JSON数据,可以使用Axios的post方法,并将数据作为第二个参数传递。例如: ``` axios.post('/api/data', { name: '张三', age: 18, gender: '男' }) .then(response => { console.log(response.data) }) .catch(error => { console.log(error) }) ``` 在这个例子中,我们向`/api/data`发送一个POST请求,并传递一个包含姓名、年龄和性别的JSON对象作为数据。在成功响应后,我们打印出响应数据。如果出现错误,我们将错误打印到控制台。 需要注意的是,Axios默认将数据作为JSON格式发送。如果需要发送其他格式的数据,可以使用`headers`选项来设置请求头。例如,如果需要发送表单数据,可以设置`Content-Type`为`application/x-www-form-urlencoded`,并使用`qs`库将数据序列化为URL编码的格式。 ### 回答2: Vue是一种流行的JavaScript框架,用于构建交互式的Web应用程序。Axios是一个流行的JavaScript库,用于执行异步HTTP请求。在Vue应用程序中使用Axios非常方便,可以帮助我们轻松地与服务器进行异步通信。Axios可以用于传递JSON数据,使得在Vue中进行数据传递变得非常简单。 Axios提供了多种方法用于传送JSON数据,其中最常用的是POST方法。我们可以使用axios.post()方法向服务器传递JSON数据。这个方法需要两个参数,第一个是要发送JSON数据的URL,第二个是要发送JSON数据。 例如,如果我们要向服务器传递一个对象中包含的JSON数据,我们可以这样写: axios.post('/url', { firstName: 'John', lastName: 'Doe' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); 这个代码片段向服务器发送了一个包含firstName和lastName属性的JSON数据。我们可以在then函数中处理服务器响应的返回值。如果服务器出错,我们可以在catch函数中处理错误。 除了POST方法外,Axios还提供了PUT、PATCH、DELETE等其他方法,用于向服务器传递JSON数据。这些方法的用法和POST方法类似,在第一个参数中指定URL,在第二个参数中指定JSON数据即可。 最后,我们需要注意的是,在传递JSON数据时,我们需要确保服务器端能够正确识别和解析JSON数据。在前端代码中,我们可以使用JSON.stringify()方法将JavaScript对象转换为JSON字符串;在后端代码中,我们可以使用JSON.parse()方法将JSON字符串转换为JavaScript对象。只有正确地解析JSON数据,才能确保数据能够正常地在前端和后端之间传递。 ### 回答3: Vue.js是一个非常流行且灵活的JavaScript框架,它使得开发Web应用程序变得更加简单和快速。Vue.js通过其面向数据和MVVM框架的特性,可以轻松地与各种后端服务器进行交互,其中axios库的使用是其中非常重要的一部分。 由于Vue.js是用于构建SPA(单页面应用程序)的,所以数据交换通常通过ajax方法或fetch方法来完成。因此,当您需要在Vue.js中传递JSON数据时,可以使用axios库来实现。 使用axios库传递JSON数据的步骤如下: 第一步:安装axios库 使用npm工具,通过以下命令将它安装到您的Vue.js项目中: ``` npm install axios --save ``` 第二步:在Vue组件中导入并使用axios库 在Vue组件中使用以下代码导入axios库: ``` import axios from 'axios' ``` 然后,您可以将axios库与您的Vue组件的data对象一起使用,以便将JSON数据传递到后端服务器。例如,如果要传递以下JSON数据: ``` { "name": "John", "email": "[email protected]", "message": "Hello world" } ``` 则可以使用以下代码将其传递到后端服务器: ``` axios.post('/my-api-url', { name: this.name, email: this.email, message: this.message }) .then(response => { console.log(response.data) }) .catch(error => { console.log(error.response.data) }) ``` 在这个例子中,我们使用axios.post方法将JSON数据发送到指定的URL,在响应完成之后,我们使用.then方法处理响应数据或使用.catch方法处理错误。 总结:因为Vue.js提供了非常便捷的MVVM框架和数据绑定机制,可以很容易地使用axios库来传递JSON数据。通过这个过程,开发人员可以通过Vue.js的组件化方法协调组件之间的关系,非常实用。使用Vue.js + axios的组合不仅可以改善Web应用程序的性能,加快前端开发速度,还可以轻松地支持各种后端数据交换协议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值