返回

Axios运行的本质与拦截器技术解析

前端

Axios的运行过程

Axios的运行过程可以分为以下几个步骤:

  1. 创建Axios实例

    const axios = require('axios');
    

    创建Axios实例后,即可使用它发送HTTP请求。

  2. 发送HTTP请求

    axios.get('https://example.com');
    

    发送HTTP请求后,Axios会自动处理请求的生命周期,包括发送请求、等待响应、解析响应等。

  3. 处理响应

    axios.get('https://example.com').then((response) => {
      console.log(response.data);
    });
    

    当HTTP请求成功完成后,Axios会将响应数据返回给用户。

  4. 处理错误

    axios.get('https://example.com').catch((error) => {
      console.log(error.message);
    });
    

    当HTTP请求失败时,Axios会将错误信息返回给用户。

Axios的拦截器技术

Axios的拦截器技术允许用户在HTTP请求发送之前和之后执行一些操作。这使得用户可以方便地处理请求头、请求参数、响应数据等。

Axios的拦截器分为两种:

  • 请求拦截器 :在HTTP请求发送之前执行。
  • 响应拦截器 :在HTTP请求成功完成或失败后执行。

请求拦截器

请求拦截器可以用来处理以下操作:

  • 添加请求头

    axios.interceptors.request.use((config) => {
      config.headers['Authorization'] = 'Bearer 123456';
      return config;
    });
    
  • 修改请求参数

    axios.interceptors.request.use((config) => {
      config.params.page = 1;
      return config;
    });
    
  • 取消请求

    axios.interceptors.request.use((config) => {
      if (user.isCancelled) {
        return Promise.reject(new axios.Cancel('Request cancelled by user'));
      }
      return config;
    });
    

响应拦截器

响应拦截器可以用来处理以下操作:

  • 解析响应数据

    axios.interceptors.response.use((response) => {
      return response.data;
    });
    
  • 处理错误响应

    axios.interceptors.response.use((response) => {
      if (response.status >= 400) {
        return Promise.reject(new Error('Error: ' + response.status));
      }
      return response;
    });
    
  • 添加响应头

    axios.interceptors.response.use((response) => {
      response.headers['X-Powered-By'] = 'Axios';
      return response;
    });
    

结语

Axios的拦截器技术是一种非常强大的工具,它可以帮助用户方便地处理HTTP请求的生命周期。通过使用拦截器,用户可以轻松地实现请求头、请求参数、响应数据等的处理。