解决axios的post请求发送form格式数据,后台接收不到问题

时间:2024-10-12 19:43:19

问题描述

在开发工作中遇到这样一个问题,后端接口定义的接口的格式为post,但是请求方式为form格式,先设置header中的Content-Type为application/x-www-form-urlencoded,并且在network中看到传参格式为form,但是后端接收到的数据却为空。

解决过程

请求发送后,我打开控制台一看,content-type,然后也是form data,没问题呀,妥妥的form格式传参呀,但是后台就是接收不到数据,我一度怀疑是后台键名是不是写错了,但是用postman测接口一点毛病都没有,哈哈哈,就肯定排除了人家那边的问题了,后来参考网上的一篇文章才发现问题,
在这里插入图片描述
原来axios在发送请求的时候会自动对数据进行一次JSON转换。所以我们虽然在network里面看到传参格式为form data,但是实际上并不是form格式,而是转成了json,我们可以看到控制台的form data 后面有个:,是因为转成json后作为键名,对应的键值并没有,而是空,所以后台接不到数据,
既然找到了问题所在,那么就好解决了,
继续看axios的文档。
年京东方在这里插入图片描述
哈哈哈,找到办法了,axios提供了属性,我们可以在传递数据之前做一次处理就ok啦

import qs from 'qs'
 {
 	transformRequest: [function (data) {
        return (data)
      }]
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

虽然axios中带了qs,可以不用下载,但是用的时候还是需要引用一下的呀。
在axios中的config配置项中配置一下,处理一下数据就可以了。
处理好了以后,在来一次请求。
在这里插入图片描述
这样就没有问题了,成功请求到数据。

参考文章:Vue乱搞系列之axios发起表单请求