axios的使用上一般封裝好對應的方法,ES6導出,直接調用,消息通知使用了ElementUI的Message組件。
這是一個封裝了axios的Rest風格的工具類,包擴常用的POST,GET,PUT,DELETE,
在請求處理上使用統一的請求攔截處理。對返回的消息進行攔截預處理,有數據返回數據,沒有返回消息。
import axios from 'axios' import router from '../router' import { Message } from 'element-ui'; /* //封裝網絡請求方法 */ /** * 統一處理網絡請求的響應攔截處理方式, */ axios.interceptors.response.use(success => { if (success.status && success.status == 200 && success.data.status == 500) { Message.error({ message: success.data.msg }) return; } if (success.data.msg) { Message.success({ message: success.data.msg }) } return success.data; }, error => { if (error.response.status == 504 || error.response.status == 404) { Message.error({ message: '服務器被吃了( ╯□╰ )' }) } else if (error.response.status == 403) { Message.error({ message: '權限不足,請聯系管理員' }) } else if (error.response.status == 401) { Message.error({ message: '尚未登錄,請登錄' }) router.replace('/'); } else { if (error.response.data.msg) { Message.error({ message: error.response.data.msg }) } else { Message.error({ message: '未知錯誤!' }) } } return; }) //post請求的封裝K-v形式 let base = ''; export const postKeyValueRequest = (url, params) => { return axios({ method: 'post', url: `${base}${url}`, data: params, transformRequest: [function(data) { let ret = '' for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret }], headers: { 'Content-Type': 'application/x-www-form-urlencoded', } }); } //傳遞json的post請求 export const postRequest = (url, params) => { return axios({ method: 'POST', url: `${base}${url}`, data: params, }) } // put請求封裝 export const putRequest = (url, params) => { return axios({ method: 'put', url: `${base}${url}`, data: params, }) } // get請求封裝 export const getRequest = (url, params) => { return axios({ method: 'get', url: `${base}${url}`, data: params, }) } // delete請求封裝 export const deleteRequest = (url, params) => { return axios({ method: 'delete', url: `${base}${url}`, data: params, }) }