axios拦截器1

2018-07-26  本文已影响0人  前端划水工

为了减少代码的臃肿和方便维护,对axios请求统一做了一些处理,代码如下

import axios from 'axios'
import qs from 'qs'
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
//POST传参序列化
axios.interceptors.request.use((config) => {
  if(config.method  === 'post'){
    // config.data = qs.stringify(config.data);
  }
  return config;
},(error) =>{
  // console.warn("错误的传参");
  return Promise.reject(error);
});
//code状态码200判断
axios.interceptors.response.use((res) =>{
  if(!res.data.hasOwnProperty('status')) {
    res.data.status = res.data.code;
    //return Promise.reject(res.data);
  }
  return Promise.resolve(res.data)
}, (error) => {
  // console.warn("网络异常");
  return Promise.reject(error);
});

function fetch(options) {
  options = options || {}
  let pos = options.url.search(/^http/i)
  if (pos == -1)
    options.url = serviceProtocol() + options.url;
  options.headers = options.headers || {};
  return axios(options)
}
export default fetch;

大致思路就是这样
fetch的使用

export function publishChatMsg(data) {
  return fetch({
    method: 'post',
    url: ``,
    data: data
  })
}
上一篇下一篇

猜你喜欢

热点阅读