import axios from 'axios';
import { Message } from 'element-ui';
let baseURL = '';
if (process.env.NODE_ENV === 'development') {
baseURL = ''; //设置自己的baseURL
}
const service = axios.create({
baseURL
// timeout: 240000 // request timeout455445424
});
// request interceptor
service.interceptors.request.use(config => {
config.headers = {
'Content-Type': 'application/json;charset=utf-8'
};
return config;
}, error => {
// Do something with request error
Promise.reject(error);
});
const codeMessage = {
200: '服务器成功返回请求的数据。',
201: '新建或修改数据成功。',
202: '一个请求已经进入后台排队(异步任务)。',
204: '删除数据成功。',
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
401: '用户没有权限(令牌、用户名、密码错误)。',
403: '用户得到授权,但是访问是被禁止的。',
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
406: '请求的格式不可得。',
410: '请求的资源被永久删除,且不会再得到的。',
422: '当创建一个对象时,发生一个验证错误。',
500: '服务器发生错误,请检查服务器。',
502: '网关错误。',
503: '服务不可用,服务器暂时过载或维护。',
504: '网关超时。'
};
/**
* @function 请求状态码检测
* @param {type} response {description}
* @return {type} {description}
*/
const checkStatus = response => {
if (response.status >= 200 && response.status < 300) {
return response;
}
const errortext = codeMessage[response.status] || response.statusText;
Message({
message: `请求错误 ${response.status}: ${response.url},${errortext}`,
type: 'error',
duration: 5 * 1000
});
const error = new Error(errortext);
error.name = response.status;
error.response = response;
throw error;
};
/* 返回一个Promise(发送post请求) */
const fetch = (type, url, params) => {
return new Promise((resolve, reject) => {
const data = (type === 'get' || type === 'delete') ? { params: params } : params;
service[type](url, data)
.then(checkStatus)
.then(response => {
const resultData = response.data;
const code = resultData.code || resultData.R;
if (code === 200 || code === 220 || code === 299) {
resolve(resultData);
} else if (code === 1) {
Message({
message: resultData.message || resultData.msg,
type: 'error',
duration: 5 * 1000
});
reject(new Error(resultData.message));
} else {
if (resultData.message !== '异常') {
Message({
message: resultData.message || resultData.msg,
type: 'error',
duration: 5 * 1000
});
}
reject(new Error(resultData.message));
}
}).catch((error) => {
reject(error);
});
});
};
export default fetch;
封装一个http请求文件
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前言 最近在研究AFN的实现方式,发现它使用block替代了代理的方式,将各个网络请求的各个阶段都整合在一起,使得...
- 如果你做过Angular或者Vue的话,你会发现,微信小程序跟他们有很多相似的地方,相比来说,小程序要简单一些。h...