1. 程式人生 > 其它 >axios封裝學習

axios封裝學習

首先是看這篇部落格:

https://juejin.cn/post/6876993324159500301

 

然後根據axios官網:

import axios from 'axios'; import { Toast } from 'vant'
// 統一請求路徑字首 let base = '/api';
// `headers` 是即將被髮送的自定義請求頭 // headers: {'X-Requested-With': 'XMLHttpRequest'}, // axios.defaults.headers.common[''] = ''
// 介面環境地址 let API_ROOT = process.env
.API_ROOT
// 超時設定 axios.defaults.timeout = 15000; // 跨域訪問攜帶cookie axios.defaults.withCredentials = true
axios.interceptors.request.use(config => {     // 在傳送請求之前做些什麼     return config; }, err => {     // 對請求錯誤做些什麼     Toast('請求超時');         return Promise.resolve(err); });
// http response 攔截器 // 對響應資料做點什麼
axios.interceptors.response.use(response => {     const data = response.data;     // 根據返回的code值來做不同的處理(和後端約定)     switch (data.code) {         case 210:             Toast(data.message);             break;         // 錯誤         case 500:                         Toast("聯絡管理員");             break;         default
:             return data;     }     return data; }, (err) => {     // 返回狀態碼不為200時候的錯誤處理     Toast('連線錯誤,請重試');     return Promise.resolve(err); });
// 移除攔截器 // const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); // axios.interceptors.request.eject(myInterceptor);
// get 請求 export const getRequest = (url, params) => {     let accessToken = getStore('accessToken');     return axios({         method: 'get',         url: `${API_ROOT}${base}${url}`,         params: params,         headers: {             'accessToken': accessToken         }     }); };
// post請求 export const postRequest = (url, params) => {     let accessToken = getStore("accessToken");     return axios({         method: 'post',         url: `${API_ROOT}${base}${url}`,         data: params,         transformRequest: [function (data) {             let ret = '';             for (let it in data) {                 ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';             }             ret = ret.substring(0, ret.length - 1);             return ret;         }],         headers: {             'Content-Type': 'application/x-www-form-urlencoded',             'accessToken': accessToken         }     }); };
export const putRequest = (url, params) => {     // let accessToken = getStore("accessToken");     return axios({         method: 'put',         url: `${API_ROOT}${base}${url}`,         data: params,         transformRequest: [function (data) {             let ret = '';             for (let it in data) {                 ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';             }             ret = ret.substring(0, ret.length - 1);             return ret;         }],         headers: {             'Content-Type': 'application/x-www-form-urlencoded',             'accessToken': accessToken         }     }); };
export const deleteRequest = (url, params) => {     let accessToken = getStore('accessToken');     return axios({         method: 'delete',         url: `${API_ROOT}${base}${url}`,         params: params,         headers: {            'accessToken': accessToken         }     }); };
/**  * 無需token驗證的請求 避免舊token過期導致請求失敗  * @param{*}url  * @param{*}params  */ export const getRequestWithNoToken = (url, params) => {     return axios({         method: 'get',         url: `${API_ROOT}${base}${url}`,         params: params     }); };

 

import axios from 'axios'; import { Toast } from 'vant'
// 統一請求路徑字首 let base = '/api';
// `headers` 是即將被髮送的自定義請求頭 // headers: {'X-Requested-With': 'XMLHttpRequest'}, // axios.defaults.headers.common[''] = ''
// 介面環境地址 let API_ROOT = process.env.API_ROOT
// 超時設定 axios.defaults.timeout = 15000; // 跨域訪問攜帶cookie axios.defaults.withCredentials = true
axios.interceptors.request.use(config => {     // 在傳送請求之前做些什麼     return config; }, err => {     // 對請求錯誤做些什麼     Toast('請求超時');         return Promise.resolve(err); });
// http response 攔截器 // 對響應資料做點什麼 axios.interceptors.response.use(response => {     const data = response.data;     // 根據返回的code值來做不同的處理(和後端約定)     switch (data.code) {         case 210:             Toast(data.message);             break;         // 錯誤         case 500:                         Toast("聯絡管理員");             break;         default:             return data;     }     return data; }, (err) => {     // 返回狀態碼不為200時候的錯誤處理     Toast('連線錯誤,請重試');     return Promise.resolve(err); });
// 移除攔截器 // const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); // axios.interceptors.request.eject(myInterceptor);
// get 請求 export const getRequest = (url, params) => {     let accessToken = getStore('accessToken');     return axios({         method: 'get',         url: `${API_ROOT}${base}${url}`,         params: params,         headers: {             'accessToken': accessToken         }     }); };
// post請求 export const postRequest = (url, params) => {     let accessToken = getStore("accessToken");     return axios({         method: 'post',         url: `${API_ROOT}${base}${url}`,         data: params,         transformRequest: [function (data) {             let ret = '';             for (let it in data) {                 ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';             }             ret = ret.substring(0, ret.length - 1);             return ret;         }],         headers: {             'Content-Type': 'application/x-www-form-urlencoded',             'accessToken': accessToken         }     }); };
export const putRequest = (url, params) => {     // let accessToken = getStore("accessToken");     return axios({         method: 'put',         url: `${API_ROOT}${base}${url}`,         data: params,         transformRequest: [function (data) {             let ret = '';             for (let it in data) {                 ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';             }             ret = ret.substring(0, ret.length - 1);             return ret;         }],         headers: {             'Content-Type': 'application/x-www-form-urlencoded',             'accessToken': accessToken         }     }); };
export const deleteRequest = (url, params) => {     let accessToken = getStore('accessToken');     return axios({         method: 'delete',         url: `${API_ROOT}${base}${url}`,         params: params,         headers: {            'accessToken': accessToken         }     }); };
/**  * 無需token驗證的請求 避免舊token過期導致請求失敗  * @param{*}url  * @param{*}params  */ export const getRequestWithNoToken = (url, params) => {     return axios({         method: 'get',         url: `${API_ROOT}${base}${url}`,         params: params     }); };