axios 封装
axios.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | // 引入网络请求库 https://github.com/axios/axios import axios from 'axios' import { message } from 'choerodon-ui' ; // import store from '../store' // import router from '../router' // 请求列表 const requestList: any = [] // 取消列表 const CancelToken = axios.CancelToken let sources: any = {} // axios.defaults.timeout = 10000 axios.defaults.headers.post[ 'Content-Type' ] = 'application/json;charset=UTF-8' axios.defaults.baseURL = process.env.BASE_URL || 'http://localhost:7001/' axios.interceptors.request.use((config) => { const request = JSON.stringify(config.url) + JSON.stringify(config.data) config.cancelToken = new CancelToken((cancel) => { sources[request] = cancel }) if (requestList.includes(request)){ sources[request]( '取消重复请求' ) } else { requestList.push(request) // store.dispatch('changeGlobalState', {loading: true}) } // const token = store.getters.userInfo.token // if (token) { // config.headers.token = token // } return config }, function (error) { return Promise.reject(error) }) 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) }) const request = function (url: any, params: any, config: any, method: string) { return new Promise((resolve, reject) => { // @ts-ignore axios[method](url, params, Object.assign({}, config)).then((response: any) => { resolve(response.data) }, (err: any) => { if (err.Cancel) { console.log(err) } else { reject(err) } }). catch ((err: any) => { reject(err) }) }) } const post = (url: any, params: any, config = {}) => { return request(url, params, config, 'post' ) } const get = (url: any, params: any, config = {}) => { return request(url, params, config, 'get' ) } export {sources, post, get} |
.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
2021-07-05 C7N 开发注意事项
2020-07-05 centos7 设置 防火墙 开机自启(tl)
2018-07-05 react 调用 function 的写法 及 解决 react onClick 方法自动执行
2017-07-05 在windows下搭建React Native Android开发环境