Fetch API — стандартный способ отправлять HTTP-запросы из браузера на сервер. Его используют для получения данных из REST API, отправки форм, авторизации, загрузки файлов и построения интерактивных веб-приложений.
Что такое Fetch API
Это встроенный браузерный интерфейс для выполнения запросов по сети. В отличие от XMLHttpRequest, fetch() работает на Promise, код получается чище и удобнее для async/await.
const response = await fetch('/api/users');
const data = await response.json();
console.log(data);
Как работает HTTP в Fetch
Через fetch() можно управлять основными параметрами HTTP-запроса:
method— метод: GET, POST, PUT, DELETEheaders— заголовкиbody— тело запросаcredentials— куки и авторизацияmode— поведение CORS
const response = await fetch('/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'user@mail.com',
password: '123456'
})
});
Важно: fetch не считает 404 и 500 ошибкой Promise
Promise отклоняется только при сетевой ошибке. Поэтому статус нужно проверять вручную:
const response = await fetch('/api/data');
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
const result = await response.json();
Частые форматы ответа 📦
Fetch умеет читать ответ разными способами:
response.json()— JSONresponse.text()— текстresponse.blob()— файлы и изображенияresponse.formData()— данные формы
Работа с заголовками и токенами 🔐
Для API с авторизацией часто передают Bearer Token:
const response = await fetch('/api/profile', {
headers: {
Authorization: 'Bearer token_here'
}
});
CORS и почему запрос может не пройти 🚫
Если фронтенд и API находятся на разных доменах, браузер проверяет политику CORS. Даже если сервер доступен, запрос может быть заблокирован, если сервер не вернул нужные заголовки вроде:
Access-Control-Allow-OriginAccess-Control-Allow-Headers
Это частая причина ошибки “Failed to fetch”.
Обработка ошибок на практике 🛠️
try {
const response = await fetch('/api/users');
if (!response.ok) {
throw new Error(`Status: ${response.status}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Ошибка запроса:', error);
}
Что важно помнить
fetch()асинхронный- по умолчанию метод — GET
- для JSON почти всегда нужен
Content-Type: application/json - HTTP-ошибки нужно проверять через
response.ok - CORS ограничивает кросс-доменные запросы
- для отмены запроса используют
AbortController
Fetch API — базовый инструмент современной веб-разработки. Понимание HTTP-методов, статусов, заголовков и обработки ошибок помогает писать стабильный фронтенд, который корректно работает с любым API. 💻
Заодно загляните в подборку каналов про IT — там много полезного по фронтенду, бэкенду, DevOps и разработке в целом.