拦截器ios
首先咱们要明白设置拦截器的目的是什么,当咱们须要统一处理http请求和响应时咱们经过设置拦截器处理方便不少.axios
这个项目我引入了element ui框架,因此我是结合element中loading和message组件来处理的.咱们能够单独创建一个http的js文件处理axios,再到main.js中引入.服务器
/** * http配置 */ // 引入axios以及element ui中的loading和message组件 import axios from 'axios' import { getSession } from '@/utils' import { Spin, Message } from 'iview' axios.prototype.$spin = Spin; // 超时时间 axios.defaults.timeout = 5000 // http请求拦截器 axios.interceptors.request.use(config => { Spin.show() config.headers['authorization'] = getSession('authorization') === null ? "" : getSession('authorization') return config }, error => { Spin.hide() Message.error({ content: '加载超时' }) return Promise.reject(error) }) // http响应拦截器 axios.interceptors.response.use(data => {// 响应成功关闭loading Spin.hide() return data }, error => { Spin.hide() switch (error.response.status) { case 401: Message.error({ content: '没有权限' }); break case 404: Message.error({ content: '页面丢失了' }); break case 500: Message.error({ content: '服务器请求超时' }); break default: Message.error({ content: '未知错误!' }); } return Promise.reject(error) }) export default axios
export function getSession(key) { return window.sessionStorage.getItem(key) } export function setSession(key, val) { window.sessionStorage.setItem(key, val) }