axios 封装

axios.ts

javascript;gutter:true; // 引入网络请求库 https://github.com/axios/axios</p> <p>import axios from 'axios' import { message } from 'choerodon-ui'; // import store from '../store' // import router from '../router'</p> <p>// 请求列表 const requestList: any = [] // 取消列表 const CancelToken = axios.CancelToken let sources: any = {}</p> <p>// axios.defaults.timeout = 10000 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'</p> <p>axios.defaults.baseURL = process.env.BASE_URL || 'http://localhost:7001/'</p> <p>axios.interceptors.request.use((config) => { const request = JSON.stringify(config.url) + JSON.stringify(config.data)</p> <p>config.cancelToken = new CancelToken((cancel) => { sources[request] = cancel })</p> <p>if(requestList.includes(request)){ sources<a href="" title="取消重复请求">request</a> }else{ requestList.push(request) // store.dispatch('changeGlobalState', {loading: true}) }</p> <p>// const token = store.getters.userInfo.token // if (token) { // config.headers.token = token // }</p> <p>return config }, function (error) { return Promise.reject(error) })</p> <p>axios.interceptors.response.use(function (response) { const request = JSON.stringify(response.config.url) + JSON.stringify(response.config.data) requestList.splice(requestList.findIndex((item: any) => item === request), 1) if (requestList.length === 0) { // store.dispatch('changeGlobalState', {loading: false}) } if (response.data.code === 900401) { message.error('认证失效,请重新登录!', 1000) // router.push('/login') } return response }, function (error) { if (axios.isCancel(error)) { requestList.length = 0 // store.dispatch('changeGlobalState', {loading: false}) throw new axios.Cancel('cancel request') } else { message.error('网络请求失败', 1000) } return Promise.reject(error) })</p> <p>const request = function (url: any, params: any, config: any, method: string) { return new Promise((resolve, reject) => { // @ts-ignore axios<a href="url, params, Object.assign({}, config)">method</a>.then((response: any) => { resolve(response.data) }, (err: any) => { if (err.Cancel) { console.log(err) } else { reject(err) } }).catch((err: any) => { reject(err) }) }) }</p> <p>const post = (url: any, params: any, config = {}) => { return request(url, params, config, 'post') }</p> <p>const get = (url: any, params: any, config = {}) => { return request(url, params, config, 'get') }</p> <p>export {sources, post, get}

.

Original: https://www.cnblogs.com/crazycode2/p/16449127.html
Author: 每天都要进步一点点
Title: axios 封装

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545630/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球