axios的二次封装
2017-12-28 16:07 muamaker 阅读(181) 评论(0) 收藏 举报'use strict' import axios from 'axios' import qs from 'qs' var host = "https://www.easy-mock.com/mock/5bb02bc0a0afc503f502a292/example"; axios.interceptors.request.use(config => { // loading //请求拦截 return config }, error => { return Promise.reject(error) }) axios.interceptors.response.use(response => { //响应拦截 return response }, error => { return Promise.reject(error.response) }) function checkStatus(response) { // loading // 如果http状态码正常,则直接返回数据 if(response && (response.status === 200 || response.status === 304 || response.status === 400)) { var res = response.data || {}; try{ if(typeof res == "string"){ res = JSON.parse(res); } //还可以判断数据是否正确 }catch(e){ console.warn("不是一个json数据:",res); } //用于判断数据是否正确 if(res.success){ return res; }else{ console.error("数据请求错误"); return Promise.reject(res); } }else{ // 异常状态下,把错误信息返回去 //处理错误情况 return Promise.reject(response) } } export default { post(url, data) { data = data || {}; return axios({ method: 'post', url: host + url, data: qs.stringify(data), timeout: 10000, }).then(checkStatus).catch((e)=>{ console.error("统一处理的错误",e); return Promise.reject(e); }); }, get(url, params) { params = params || {}; return axios({ method: 'get', url: host + url , params, // get 请求时带的参数 timeout: 10000, }).then(checkStatus).catch((e)=>{ console.error("统一处理的错误",e); return Promise.reject(e); }); } }
import $http from "./http"; $http.get("/demo/secret",param).then((ret)=>{ console.info(ret); return ret; });