记录封装Aioxs

2024-06-04 13:22:11 浏览数 (4)

1、封装

代码语言:js复制
// request.js
import axios from 'axios';

// 创建 axios 实例
const request = axios.create({
  baseURL: 'https://api.example.com', // 基础 URL
  timeout: 5000, // 请求超时时间
});

// 请求拦截器
request.interceptors.request.use(
  config => {
    // 在发送请求之前做些什么,比如添加 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    // 处理请求错误
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  response => {
    // 处理响应数据
    return response.data;
  },
  error => {
    // 处理响应错误
    if (error.response) {
      // 请求已发出,但服务器响应的状态码不在 2xx 范围内
      console.error('Response error:', error.response.data);
    } else {
      // 其他错误
      console.error('Error:', error.message);
    }
    return Promise.reject(error);
  }
);

export default request;

2、使用

代码语言:js复制
// 在需要进行 API 调用的文件中
import request from './request';

// 示例:获取数据
const fetchData = async () => {
  try {
    const data = await request.get('/data'); // 假设你的 API 路径是 /data
    console.log('Data:', data);
  } catch (error) {
    console.error('API call error:', error);
  }
};

// 调用示例函数
fetchData();

0 人点赞