← Назад к вопросам
Что такое Axios Instance?
1.0 Junior🔥 221 комментариев
#Браузер и сетевые технологии
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Что такое Axios Instance?
Axios Instance — это объект, созданный через axios.create(), который содержит предварительно настроенные параметры для выполнения HTTP запросов. Это один из ключевых паттернов при работе с HTTP клиентами в современных приложениях.
Основная концепция
Вместо того чтобы использовать глобальный axios и каждый раз передавать одни и те же параметры (baseURL, headers, timeout), создаём отдельный instance с нужной конфигурацией:
const axiosInstance = axios.create({
baseURL: "https://api.example.com",
timeout: 10000,
headers: {
"Content-Type": "application/json",
},
});
// Теперь используем его
axiosInstance.get("/users");
axiosInstance.post("/users", { name: "John" });
Главное применение — интерцепторы
Main power Axios Instance в том, что интерцепторы работают только для конкретного instance:
// Интерцептор для добавления токена
axiosInstance.interceptors.request.use((config) => {
const token = localStorage.getItem("authToken");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
// Интерцептор для обработки ошибок
axiosInstance.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
// Редирект на логин
window.location.href = "/login";
}
return Promise.reject(error);
}
);
Практический пример структуры проекта
// src/api/axiosInstance.ts
export const apiClient = axios.create({
baseURL: process.env.REACT_APP_API_URL,
timeout: 15000,
});
apiClient.interceptors.request.use((config) => {
const auth = JSON.parse(localStorage.getItem("auth") || "{}");
if (auth.token) {
config.headers.Authorization = `Bearer ${auth.token}`;
}
return config;
});
apiClient.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
// Refresh token logic
}
return Promise.reject(error);
}
);
export default apiClient;
// src/api/users.ts
import apiClient from "./axiosInstance";
export const getUsersAPI = () => apiClient.get("/users");
export const updateUserAPI = (id, data) => apiClient.put(`/users/${id}`, data);
Преимущества использования Instance
- DRY принцип — конфигурация в одном месте
- Масштабируемость — легко добавлять новые endpoints
- Тестируемость — можно мокировать один instance в тестах
- Разделение ответственности — API клиент отдельно от компонентов
- Управление состоянием — интерцепторы обрабатывают общую логику (auth, errors)
Отличие от глобального axios
// ❌ Плохо — глобальный axios
axios.get("/users", {
headers: { Authorization: `Bearer ${token}` },
});
// ✅ Хорошо — instance с интерцепторами
apiClient.get("/users"); // token добавляется автоматически
Axios Instance — это фундамент для правильной организации HTTP клиента в React приложениях, обеспечивающий чистоту кода и упрощающий управление API запросами.