当前位置:首页 > React

react如何封装axios

2026-02-12 00:13:23React

封装axios的基本步骤

在React中封装axios可以提高代码复用性、统一错误处理和请求配置。以下是一个常见的封装方法:

创建独立的axios实例文件(如api.js):

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {'Content-Type': 'application/json'}
});

请求拦截器处理

添加请求拦截器用于统一处理token等认证信息:

instance.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => Promise.reject(error)
);

响应拦截器处理

添加响应拦截器统一处理响应数据和错误:

instance.interceptors.response.use(
  response => {
    if (response.data.code === 200) {
      return response.data;
    }
    return Promise.reject(response.data);
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 处理未授权
          break;
        case 404:
          // 处理未找到
          break;
        default:
          console.error('请求错误');
      }
    }
    return Promise.reject(error);
  }
);

封装常用请求方法

封装GET、POST等常用方法:

export const get = (url, params) => instance.get(url, { params });
export const post = (url, data) => instance.post(url, data);
export const put = (url, data) => instance.put(url, data);
export const del = url => instance.delete(url);

使用示例

在组件中使用封装好的方法:

import { get, post } from './api';

// GET请求
get('/users', { page: 1 })
  .then(data => console.log(data))
  .catch(err => console.error(err));

// POST请求
post('/login', { username, password })
  .then(data => console.log(data))
  .catch(err => console.error(err));

高级配置选项

可添加更多自定义配置:

export const request = (options) => {
  return instance({
    method: options.method || 'get',
    url: options.url,
    params: options.params,
    data: options.data,
    ...options.config
  });
};

类型安全(TypeScript)

使用TypeScript增加类型定义:

react如何封装axios

interface ResponseData<T = any> {
  code: number;
  data: T;
  message: string;
}

export const get = <T>(url: string, params?: any): Promise<ResponseData<T>> => {
  return instance.get(url, { params });
};

这种封装方式提供了统一的错误处理、请求配置和响应处理,使项目中的HTTP请求更加规范且易于维护。

标签: reactaxios
分享给朋友:

相关文章

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

uniapp使用axios无法请求

uniapp使用axios无法请求

uniapp中使用axios请求问题解决方案 在uniapp中使用axios可能会遇到跨域、请求失败或兼容性问题。以下是常见原因及解决方法: 检查axios安装与引入 确保已正确安装axios:…

react 如何操作cookie

react 如何操作cookie

安装依赖 在React项目中操作cookie通常需要第三方库的支持,推荐使用js-cookie。通过npm或yarn安装: npm install js-cookie # 或 yarn add js…

vscode如何配置react

vscode如何配置react

配置 VSCode 进行 React 开发 安装必要插件 ES7+ React/Redux/React-Native snippets:提供 React 代码片段快速生成功能。 Prettier -…

react 如何引用slider

react 如何引用slider

使用 React 实现 Slider 组件 在 React 中实现 Slider 功能可以通过原生 HTML 的 <input type="range"> 或第三方库(如 react-sl…

react如何激活跟踪

react如何激活跟踪

激活 React 跟踪的方法 React 跟踪通常指性能监控、状态变更追踪或用户行为分析。以下是几种常见场景的激活方式: 使用 React DevTools React DevTools 是官方…