Axios — популярный HTTP-клиент, используемый в средах JavaScript. Он может работать как в браузерах, так и в Node.js. Одной из самых мощных функций, предоставляемых Axios, являются настраиваемые операции, называемые «перехватчиками». В этой статье мы рассмотрим, что такое перехватчики и как их можно использовать на практических примерах.

Перехватчики

Перехватчики обеспечивают дополнительную функциональность HTTP-клиента и позволяют вам вмешиваться в обработку запросов и ответов. Перехватчики запросов могут выполнять операции до того, как запрос будет отправлен, а перехватчики ответов позволяют выполнять операции над ответами, возвращенными с сервера.

Некоторые сценарии использования:

1.Глобальное управление ошибками API: может использоваться для централизованного управления ошибками, возвращаемыми с сервера.

axios.interceptors.response.use(
  function (response) {
    // Handle successful responses
    return response;
  },
  function (error) {
    // Handle server error codes and display warning messages
    if (error.response.status === 401) {
      alert("Your session has expired. Please log in again.");
    } else if (error.response.status === 403) {
      alert("You do not have the authority to perform this action.");
    } else if (error.response.status === 404) {
      alert("The requested resource could not be found.");
    } else {
      alert("An unexpected error occurred. Please try again later.");
    }
    return Promise.reject(error);
  }
);

2. Измерение времени запросов и ответов. Может использоваться для измерения времени запросов и ответов API и отслеживания производительности.

// Measure request time
axios.interceptors.request.use(function (config) {
  config.metadata = { startTime: new Date() };
  return config;
});

// Measure response time
axios.interceptors.response.use(function (response) {
  response.config.metadata.endTime = new Date();
  response.duration = response.config.metadata.endTime - response.config.metadata.startTime;
  console.log(`Request for ${response.config.url} took ${response.duration} ms.`);
  return response;
});

3. Автоматические повторы: может использоваться для автоматического повторения запросов в случае ошибок сетевого подключения и временных проблем с сервером.

const axios = require("axios");
const axiosRetry = require("axios-retry");

// Automatically retry requests
axiosRetry(axios, {
  retries: 3, // Retry requests 3 times
  retryDelay: (retryCount) => {
    return retryCount * 1000; // Apply increasing delays between retries
  },
  retryCondition: (error) => {
    // Retry on network errors or 5xx server errors
    return axiosRetry.isNetworkError(error) || error.response.status >= 500;
  },
});

// Example request
axios.get("https://api.example.com/data")
  .then(response => console.log(response.data))
  .catch(error => console.error("Request failed:", error));

4. Регистрация запросов и ответов. Регистрируя все запросы и ответы API, вы можете создать запись для отслеживания производительности и ошибок вашего приложения.

// Log requests
axios.interceptors.request.use(function (config) {
  console.log(`Request: ${config.method.toUpperCase()} ${config.url}`);
  return config;
});

// Log responses
axios.interceptors.response.use(
  function (response) {
    console.log(`Response: ${response.status} ${response.config.url}`);
    return response;
  },
  function (error) {
    console.log(`Error: ${error.response.status} ${error.config.url}`);
    return Promise.reject(error);
  }
);

// Example request
axios.get("https://api.example.com/data")
  .then(response => console.log(response.data))
  .catch(error => console.error("Request failed:", error));

Благодаря перехватчикам вы можете настраивать и улучшать различные аспекты вашего приложения. Приведенные выше примеры демонстрируют гибкость и функциональность этой функции. В зависимости от ваших потребностей вы можете выполнять больше операций с помощью перехватчиков.

Заключение:

Перехватчики Axios предлагают мощные и настраиваемые операции на HTTP-клиенте, позволяя вам вмешиваться в обработку запросов и ответов вашего приложения. В зависимости от потребностей вашего приложения вы можете использовать перехватчики для выполнения дополнительных настроек и операций. Благодаря мощным функциям, предоставляемым Axios, вы можете улучшить производительность своего приложения, управление ошибками и общее взаимодействие с пользователем.