# axios源码 **Repository Path**: Luomenghao/axios-source-code ## Basic Information - **Project Name**: axios源码 - **Description**: axios源码解析 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-05-26 - **Last Updated**: 2023-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # axios源码解析 ## 1、目录说明 ```bash |-- AxiosCore |-- .editorconfig # 编译器配置信息 |-- .gitignore # git |-- .prettierrc # git |-- README.md # 文档 |-- index.html # 入口html页面 |-- package-lock.json # 版本锁 |-- package.json # 依赖 |-- src # 源代码目录 |-- main.js # 入口文件 |-- libs # libs |-- axios # axios模块目录 |-- default.js # 默认的options配置信息 |-- index.js # 模块对外暴露的入口 |-- utils.js # 工具 |-- core # 核心 | |-- adapter.js # 适配器 | |-- axios.js # Axios class | |-- interceptor.js # 拦截器 class | |-- request.js # 请求方法 |-- helpers # 辅助模块 |-- http-status.js # http状态码 |-- merge-config.js # 合并配置模块 ``` ## 2、使用 ### 默认方式 ```javascript import axios from './libs/axios'; // default axios(url, { data: {} }).then(data => { console.log(data); }).catch(err => {}) ``` ### 调用指定方法使用 ```javascript axios.get(url, {}, { // options }) axios.post(url, {}, {}); ``` ### 创建实例 ```javascript const request = axios.create({ baseUrl: 'http://www.baidu.com:19090/api/v1/', timeout: 1000 * 10 }); request.get(url, { /* options */}) request.post(url, { /* data */ }, { /* options */}) // request... ``` ## 3、配置拦截器 ```javascript const request = axios.create({ /* options */}); /** * 请求拦截器 * 在请求发起之前做某些事情(如,带Cookie/token...) */ request.interceptors.request.use(function requestResolve(config) { config.token = localStorage.getItem('app_access_token'); // 设置token return config; }, function requestReject(err) { console.log('发起请求失败啦~~', err); return Promise.reject(err); }); /* 接口响应拦截 * 如code判断、数据处理等等 */ request.interceptors.response.use(function responseResolve(response) { const SUCCESS_CODE = '100001'; const { status } = response; const { code, message } = response.data; // ✅http状态码为成功状态 if (status === 200) { if (code !== SUCCESS_CODE) { toast('请求失败啦:' + message); // 提示错误message return Promise.reject(response.data); } return response.data; } // ❌非200处理 if (status === 401) { // 身份失效了,跳转重新登陆... } }, function responseReject(err) { console.log('响应失败啦~~', err); return Promise.reject(err); }); ```