axios的二次封装,代码可以直接复制用,错误的直接引入弹出框,弹出提示,或者根据自己业务增加错误码返回即可
http.js
import axios from 'axios'
const server = axios.create({
timeout:6000,
});
server.interceptors.request.use(config=>{
//判断toke
// config.headers['AuthToken'] = 'xxxx'
return config
})
server.interceptors.response.use(response=>{
//正确的判断
const res = response.data;
if(response.status === 200 ){
return res;
}else{
//弹出错误
console.log(11111,"params")
}
},err=>{
console.log(err,"params11111")
//请求失败的处理
//弹出框提示
return Promise.reject(err)
})
export default server;
封装get post请求
request.js
import instance from './http'
/**
*state不同状态不同域名,url请求地址,params参数 method:请求方式,headers的json还是表单这些
***/
function request(state=1,url,params,method,headers='application/json') {
return new Promise((resolve,reject)=>{
let data = {};
let baseURL = state===1?'http://xxxxx':'http://axxxx'
switch (method){
case 'get': data={params};
break;
case 'post': data ={data:params};
break;
default: break;
}
instance({
baseURL,
url,
method,
...data,
headers:{ 'Content-Type':headers },
}).then((res)=>{
resolve(res)
}).catch(err=>{
//提示错误r
reject(err)
})
})
}
function get(state,url,params,headers) {
return request(state,url,params,'get',headers);
}
function post(state,url,params,headers) {
return request(state,url,params,'post',headers);
}
export default {
get,post
}
代码中使用
import request from '../unit/request'
import qs from 'qs'
query(){
let that =this;
request.post(2,'/api/xxx/xxxx',qs.stringify({
pageNo: 1,
pageSize: 10,
}),'application/x-www-form-urlencoded').then(res1=>{
console.log(res1)
});
},
以上是全部代码,可以自己扩展。跟人建议所有请求api对应响应的module,不要在页面里面像我这样写 我的只是demo