JavaScript 中 axios 的安装、配置与封装实战

作者:组件花园

时间:2026-10-24

浏览:84

本文详解在 JavaScript 或 Vue 项目中集成 axios 的完整流程。从使用 cnpm 安装依赖开始,演示如何在 main.js 中引入,并重点讲解通过 axios.create 创建实例、配置 baseURL 与超时时间。同时深入解析请求与响应拦截器的编写方法,包括加载状态控制与错误处理,最终提供完整的封装代码供参考。

文章目录

axios 依赖安装

首先,需要在项目中安装 axios 依赖库。推荐使用 cnpm 执行以下命令进行安装:


cnpm install axios -S

全局引入与挂载

安装完成后,在项目的入口文件 main.js 中引入 axios,并将其挂载到 Vue 的原型上,以便全局使用:


import axios from 'axios'
Vue.prototype.$http = axios

创建 Axios 实例

接下来,通过 axios.create 方法创建一个自定义的 axios 实例。在配置对象中,设置 baseURL 为接口基础路径,启用 withCredentials 以支持跨域携带 Cookie,并将请求超时时间设置为 5000 毫秒:


let service = axios.create({
    baseURL: baseUrl, // url = base api url + request url
    withCredentials: true, // send cookies when cross-domain requests
    timeout: 5000 // request timeout
})

配置请求拦截器

配置请求拦截器。在发送请求前,通过 Toast.loading 开启加载动画,设置持续时间为 10000 毫秒,提示文字为“加载中...”,并禁止用户点击。同时,注释掉了 Authorization 头部 token 的获取逻辑。若请求出错,则打印错误信息并返回 Promise.reject:


let loading;
// 请求拦截
service.interceptors.request.use(config => {
 
    // loding动画开启
    loading = Toast.loading({
        duration:10000,
        message:"加载中...",
        forbidClick:true,
    })
    //config.headers['Authorization'] = sessionStorage.getItem('token')
    return config
},error =>{
    console.log(error);
    return Promise.reject(error)
})

配置响应拦截器

配置响应拦截器。当收到响应时,首先调用 loading.clear() 清除加载动画,然后返回 Promise.resolve(res)。若发生错误,同样清除加载动画,打印包含“err”前缀的错误信息,并返回 Promise.reject:


// 响应拦截
service.interceptors.response.use(res =>{
    // 清除loading
    loading.clear()
    return Promise.resolve(res)
},error =>{
    loading.clear()
    console.log('err'+error);
    return Promise.reject(error)
})

导出封装实例

最后,通过 export default 将封装好的 service 实例导出,供其他模块调用:


// 抛出
export default service

完整封装代码示例

以下是整合了引入、基础配置、请求拦截、响应拦截及导出的完整代码示例。代码中包含了 axios 引入、baseUrl 配置、Vant 的 Toast 组件引入,以及完整的拦截器逻辑:


// 引入文件
import axios from 'axios'
import {baseUrl} from '@/config'
import {Toast} from 'vant'
 
// 基础配置
let service = axios.create({
    baseURL: baseUrl, // url = base api url + request url
    withCredentials: true, // send cookies when cross-domain requests
    timeout: 5000 // request timeout
})
 
let loading;
// 请求拦截
service.interceptors.request.use(config => {
 
    // loding动画开启
    loading = Toast.loading({
        duration:10000,
        message:"加载中...",
        forbidClick:true,
    })
    //config.headers['Authorization'] = sessionStorage.getItem('token')
    return config
},error =>{
    console.log(error);
    return Promise.reject(error)
})
 
 
// 响应拦截
service.interceptors.response.use(res =>{
    // 清除loading
    loading.clear()
    return Promise.resolve(res)
},error =>{
    loading.clear()
    console.log('err'+error);
    return Promise.reject(error)
})
 
// 抛出
export default service

至此,关于 JavaScript 中 axios 的安装与封装案例介绍完毕。如需了解更多相关 js axios 安装与封装内容,建议搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章