axios二次封装

前言:

最近在翻看以前的项目时,发现了在项目经常需要用到的axios的二次封装,总结一下,方便以后的使用:

import axios from 'axios';

// 创建自定义的 Axios 实例
const instance = axios.create({
  baseURL: 'http://110.40.173.100:5173/api', // 设置基础URL
  timeout: 5000, // 设置请求超时时间
});
// 添加请求拦截器
instance.interceptors.request.use(
  (config) => {
   config.headers["Access-Control-Allow-Origin"] = "*" // 允许跨域
    const token = localStorage.getItem('token'); // 从本地存储获取token
    if (token) {
      // 在发送请求之前做一些处理,例如添加请求头、处理请求参数等
      config.headers.Authorization = token; // 在请求头中添加身份验证令牌
    }
    return config;
  },
  (error) => {
    // 处理请求错误
    console.error('Request error:', error);
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
 (response) => {
    if (response.status === 200) {
      return Promise.resolve(response.data)
    } else {
      return Promise.reject(response.data)
    }
  },
  (error) => {
    let message = ""
    const status = error.response.code
    switch (status) {
      // 401: 未登录
      // 未登录则跳转登录页面,并携带当前页面的路径
      // 在登录成功后返回当前页面,这一步需要在登录页操作。
      case 401:
        message = "未登录"
        break
      // 403 token过期
      // 登录过期对用户进行提示
      // 清除本地token和清空vuex中token对象
      // 跳转登录页面
      case 403:
        message = "登录过期,请重新登录"
        break
      case 404:
        message = "网络请求不存在"
        break
      case 500:
        message = "服务器出现问题"
        break
      default:
        message = error.response.data.message
        break
    } 
return Promise.reject(error)
  }
));
export default instance;

当使用axios库进行网络请求时,可以进行二次封装来简化调用并提供一些自定义功能。下面是一个示例,展示了如何进行axios二次封装并进行调用: **Step 1: 安装axios** 首先,确保已经安装了axios库。可以使用npm或者yarn进行安装: ```shell npm install axios ``` 或者 ```shell yarn add axios ``` **Step 2: 创建二次封装axios实例** 在项目中创建一个名为api.js(或者其他你喜欢的名字)的文件,并在其中创建一个二次封装axios实例。这个实例可以设置一些默认的配置,例如请求头、baseURL等。 ```javascript import axios from 'axios'; // 创建axios实例 const instance = axios.create({ baseURL: 'https://api.example.com', // 设置请求的baseURL timeout: 5000, // 请求超时时间 headers: { 'Content-Type': 'application/json', // 设置请求头为JSON格式 }, }); // 请求拦截器 instance.interceptors.request.use( (config) => { // 在请求发送前可以做一些处理,例如添加token等 // config.headers['Authorization'] = 'Bearer ' + token; return config; }, (error) => { return Promise.reject(error); } ); // 响应拦截器 instance.interceptors.response.use( (response) => { // 在响应返回后可以做一些处理,例如统一处理错误码等 return response.data; }, (error) => { return Promise.reject(error); } ); export default instance; ``` 上述代码创建了一个名为`instance`的axios实例,并设置了一些默认的配置,例如baseURL和请求头。还定义了请求拦截器和响应拦截器,可以在发送请求前和返回响应后进行一些处理。 **Step 3: 调用二次封装axios实例** 在需要发送网络请求的地方,可以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值