axios
import axios from 'axios';
import qs from 'qs'
switch(process.env.NODE_ENV){
case 'production':
axios.defaults.baseURL = "http://127.0.0.1:3002";
break;
case 'test':
axios.defaults.baseURL = "http://127.0.0.1:3001";
break;
default:
axios.defaults.baseURL = "http://127.0.0.1:3000";
}
axios.defaults.timeout = 10000;
axios.defaults.withCredentials = true;
axios.defaults.headers['content-type'] = 'application/x-www-form-urlencoded'
axios.defaults.tranformRequest = data => qs.stringify(data)
axios.interceptors.request.use((config)=>{
let token = localStorage.getItem('token')
token && (config.headers.Authorization = token);
return config;
},err => {
return Promise.reject(err)
})
axios.interceptors.response.use(response => {
return response.data;
},error => {
let {response} = error;
if(response) {
switch(response.status) {
case 401:
break;
case 403:
break;
case 404:
break;
}
} else {
if(!window.navigator.onLine){
return;
}
return Promise.reject(error)
}
});
export default axios;
```'
## fetch
```js
import qs from 'qs';
let baseURL = '';
let baseURLArr = [{
type:'development',
url:'http://127.0.0.1:3002'
},{
type:'test',
url:'http://127.0.0.1:3001'
},{
type:'production',
url:'http://127.0.0.1:3000'
}];
baseURLArr.forEach(item => {
if(process.env.NODE_ENV === item.type){
baseURL = item.url;
}
})
export default function request(url,option = {}) {
url = baseURL + url
!options.method ? option.method = 'GET' : null;
if(options.hasOwnProperty('params')) {
if(/^(GET|DELETE|HEAD|OPTIONS)$/i.test(options.method)){
const ask = url.includes('?' ? '&' : '?');
url += `${ask}${qs.stringify(params)}`;
}
delete options.params;
}
options = Object.assign({
credentials:'include',
headers:{}
},options);
options.headers.Accept = 'application/json';
const token = localStorage.getItem('token');
token && (options.headers.Authorization = token);
if(/^(POST|PUT)$/i.test(options.methos)){
!options.type ? options.type = 'urlencoded' : null;
if(options.type === 'urlencoded') {
options.headers['Content-Type'] ='application/x-www-form-urlencoded';
options.body = qs.stringify(options.body);
}
if(options.type === 'json') {
options.headers['Content-Type'] = 'application/json';
options.body = JSON.stringify(options.body);
}
}
return fetch(url,options).then(response => {
if(!/^(2|3)\d{2}$/.test(response.status)){
switch (response.status) {
case 404:
break;
case 403:
break;
case 404:
break;
default:
return
}
}
return response.json();
}).catch(err => {
if(window.navigator.onLine) {
return;
}
return Promise.reject(err)
})
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!