前端接口通了,控制台preview返回code500 ,无法获取后台数据 //// axios发送formdata请求
1、首先response返回code500时,一般由两种原因引起,一是前端传参有问题,二是后台服务器问题,第二种情况需要去找后端沟通解决。这里只讨论第一种情况,前端传参问题。
2、我这里遇到的是参数格式的问题。
以下三张图片,可以看到在我连通的接口中:
1)response headers中content-type是 Content-Type: application/json; charset=utf-8,
2)payload中的格式也是字符串的形式。
3)后台返回code500,并未获取到后台数据



3、所以我去对比了后台的接口情况,发现问题如下:
1)response headers中content-type是 Content-Type: application/json
2) payload格式是form data形式
很明显是我传参的格式出现了问题,导致后端返回code500。


4、解决办法
问题分析:
axios 默认是 Payload格式数据请求,但有时候后端接收参数要求必须是 Form Data 格式的,所以我们就得进行转换。
Payload和Form Data的主要设置是根据请求头的 Content-Type 的值来的:
Payload Content-Type: 'application/json; charset=utf-8'
Form Data Content-Type: 'application/x-www-form-urlencoded'
解决方法:
qs 模块是安装 axios 模块的时候就有的,不用另行安装,通过 import 引入即可使用。
import axios from 'axios';
import qs from 'qs'
// 实例对象
let instance = axios.create({
timeout: 3000,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
// 请求拦截器
instance.interceptors.request.use(
config => {
config.data = qs.stringify(config.data) // 转为formdata数据格式
return config
},
error => Promise.error(error)
)
在你的接口方法处进行配置:
export const getInfo = (data) => {
return instance.post(testSystemUrl + '/user/pageList/', data);
};
然后刷新页面就可以啦~~~~
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)