自己封装的fetch代码如下:
import axios from 'axios'
import Cookies from 'js-cookie'
import qs from 'qs'
export function fetch(config) {
//返回promise对象
return new Promise((resolve, reject) => {
let options = {}
// 需要全路径才能工作
if (process.server) {
// options.baseURL = `http://${process.env.HOST || 'localhost'}:${process.env.PORT || 3000}`
options.baseURL = `http://${process.env.HOST || 'localhost'}`
}
//创建axios实例,把基本的配置放进去
const instance = axios.create(options);
// POST 传参序列化
instance.interceptors.request.use(
config => {
let token = Cookies.get('token');
if (token) {
config.headers.Authorization = 'Bearer ' + token
}
if (config.method === 'post') {
config.data = qs.stringify(config.data);
}
return config
},
error => {
return Promise.reject(error)
}
);
// 返回状态判断
instance.interceptors.response.use(
res => {
return res.data
},
error => {
return Promise.reject(error)
}
);
//请求成功后执行的函数
instance(config).then(res => {
resolve(res);
})
//失败后执行的函数
.catch(err => {
reject(err);
})
});
}
// 封装调用的接口 getData
export function getData(url, type, params) {
if (!type || type === 'get') {
return fetch({
url: url,
method: type,
params: params,
})
} else {
return fetch({
url: url,
method: type,
body: JSON.stringify(params)
})
}
}
现在问题是post请求一直发不出去,跟了下代码都能正常走,其实我的参数已经传了,在控制台也看不到传的参数,烦请大神帮忙看下是不是上面封装的部分有问题,谢谢~
post那里是data吧 不是 body
axios-README