前端学习11 axios二次封装

1. axios概念

axios是一个基于Promise的HTTP客户端,可以用于浏览器和Node.js环境。axios支持所有现代浏览器和Node.js,可以用于发送GET、POST、PUT、DELETE等HTTP请求,并且支持请求和相应拦截、自动转换数据格式等功能。

2. Axios的核心

1.Promise 基础

Axios 基于 Promise,这意味着所有的请求都是异步的,并且可以使用 .then 和 .catch 方法来处理成功和失败的情况。

2.请求配置

每次发送请求时,可以传递一个配置对象,包含 URL、方法、请求头、请求体等信息。

3.拦截器

Axios 支持请求和响应拦截器,可以在请求发送前或响应接收后进行一些预处理或后处理操作。

4.错误处理

Axios 提供了统一的错误处理机制,可以通过 .catch 方法捕获请求过程中发生的任何错误。

5.取消请求

Axios 支持取消请求,可以在请求发送后随时取消。

6.并发请求

Axios 提供了 axios.all 和 axios.spread 方法,可以同时发送多个请求,并在所有请求完成后处理结果。

3. Axios的基本使用

Axios常用的几种请求方法:get,post,put,patch,delete

get:一般用于获取数据

post:一般用于提交数据(表单提交与文件上传)

patch:更新数据(只将修改的数据推送到后端(服务端))

put:更新数据(所有数据推送到服务端)

delete:删除数据

//引入 axios
import axios from 'axios'

//默认是get 请求
axios({
  //需要请求的URL地址
  url: 'http://123.207.32.32:8000/home/multidata'
}).then(res => {
  //输出请求成功的数据
  console.log(res);
})

axios({
  url:'http://123.207.32.32:8000/home/data',
  // 专门针对get请求的参数拼接
  prams:{
    type:'pop',
    page:1
  }
}).then(res=>{
  console.log(res);
})

4. axios 二次封装

二次封装的必要性:

  1. 代码复用

在多个地方重复编写同样的请求代码,不仅繁琐且容易出错。通过二次封装,我们可以将相同的请求逻辑抽象出来,形成统一的API接口,方便各个组件调用。

  1. 统一处理请求和响应

在数据请求时,我们通常需要处理请求的头、参数、响应的格式等。通过二次封装,可以将这些逻辑集中处理,避免每次请求都写冗余的代码。

  1. 异常处理

在实际应用中,网络请求常常会因多种原因失败。通过封装,可以在一个地方统一处理错误,方便管理和维护。

  1. 拓展功能

对于一些特定项目需求,比如添加请求拦截器、响应拦截器,或者实现请求的重试机制,二次封装提供了灵活的方式来实现这一功能。

4.1 创建Axio实例

首先,创建一个Axios实例,以便于配置和管理。

// axiosInstance.js
import axios from 'axios';

const axiosInstance = axios.create({
    baseURL: ' // API基础路径
    timeout: 10000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json',
    },
});

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

// 响应拦截器
axiosInstance.interceptors.response.use(
    response => {
        // 可以对响应数据进行处理
        return response.data;
    },
    error => {
        // 处理响应错误
        console.error(error);
        return Promise.reject(error);
    }
);

export default axiosInstance;

4.2 封装请求方法

接下来,我们可以将常用的请求方法进行封装,以便于在各个组件中调用

// apiService.js
import axiosInstance from './axiosInstance';

export const getData = (url, params) => {
    return axiosInstance.get(url, { params });
};

export const postData = (url, data) => {
    return axiosInstance.post(url, data);
};

export const putData = (url, data) => {
    return axiosInstance.put(url, data);
};

export const deleteData = (url) => {
    return axiosInstance.delete(url);
};

4.3 使用Axios封装的好处

通过上述代码,我们在项目中可以简化请求的调用,并且能够方便地处理请求和响应。

// 示例使用
import { getData, postData } from './apiService';

getData('/users', { id: 1 })
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.error('获取用户数据失败:', error);
    });

postData('/users', { name: 'Jack', age: 30 })
    .then(data => {
        console.log('用户创建成功:', data);
    })
    .catch(error => {
        console.error('创建用户失败:', error);
    });
#前端学习#
全部评论

相关推荐

评论
3
4
分享

创作者周榜

更多
牛客网
牛客企业服务