Какой статус приходит от сервера при успешном выполнении запроса?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Статусные коды HTTP при успешных запросах
При успешном выполнении HTTP-запроса сервер возвращает статусные коды из класса 2xx Success (успешное выполнение). Эти коды указывают, что запрос был корректно получен, понят и обработан сервером.
Основные успешные статус-коды
200 OK
Наиболее распространенный статус успешного выполнения. Запрос выполнен успешно, и сервер возвращает запрошенные данные.
// Пример запроса с ожиданием статуса 200
fetch('https://api.example.com/users/1')
.then(response => {
if (response.status === 200) {
return response.json();
}
throw new Error('Ошибка запроса');
})
.then(data => console.log(data));
201 Created
Указывает, что запрос выполнен успешно и создан новый ресурс. Часто используется после POST-запросов на создание.
// Пример создания ресурса
fetch('https://api.example.com/posts', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ title: 'Новый пост' })
})
.then(response => {
if (response.status === 201) {
console.log('Ресурс успешно создан');
return response.json();
}
});
204 No Content
Сервер успешно обработал запрос, но не возвращает содержимого. Часто используется для DELETE-запросов или обновлений, когда клиенту не нужен ответ.
// Пример удаления ресурса
fetch('https://api.example.com/posts/123', {
method: 'DELETE'
})
.then(response => {
if (response.status === 204) {
console.log('Ресурс удален');
}
});
Другие успешные статус-коды
- 202 Accepted - запрос принят, но обработка еще не завершена (асинхронные операции)
- 203 Non-Authoritative Information - информация возвращена, но была изменена прокси
- 205 Reset Content - аналогично 204, но требует сброса представления документа
- 206 Partial Content - сервер возвращает часть данных (используется для докачки файлов)
Практическое использование в Frontend-разработке
Обработка успешных ответов
// Современная обработка с async/await
async function fetchUserData(userId) {
try {
const response = await fetch(`https://api.example.com/users/${userId}`);
if (!response.ok) { // Проверяем диапазон 200-299
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error('Ошибка запроса:', error);
}
}
Важные аспекты для разработчика:
Ключевые моменты при работе со статус-кодами:
- Всегда проверяйте статус ответа, даже при успешных кодах
- Используйте свойство
response.okдля быстрой проверки успешности (true для 200-299) - Учитывайте специфику каждого статуса при проектировании логики приложения
- Для RESTful API соблюдайте соответствие методов HTTP и статус-кодов:
* GET → 200 (OK) или 204 (No Content)
* POST → 201 (Created) или 200 (OK)
* PUT/PATCH → 200 (OK) или 204 (No Content)
* DELETE → 200 (OK) или 204 (No Content)
Пример комплексной обработки:
class ApiClient {
async request(url, options = {}) {
const response = await fetch(url, {
headers: {'Content-Type': 'application/json'},
...options
});
const contentType = response.headers.get('content-type');
// Обрабатываем разные успешные сценарии
if (response.status === 200) {
if (contentType?.includes('application/json')) {
return await response.json();
}
return await response.text();
}
if (response.status === 201) {
const newResource = await response.json();
const location = response.headers.get('Location');
return { data: newResource, location };
}
if (response.status === 204) {
return null;
}
// Обработка ошибок
throw new Error(`Request failed with status ${response.status}`);
}
}
Правильная обработка статус-кодов — это фундаментальный навык Frontend-разработчика, который напрямую влияет на надежность, отзывчивость и пользовательский опыт приложения. Современные фреймворки и библиотеки (Axios, React Query, SWR) предоставляют встроенные механизмы для работы с HTTP-статусами, но понимание их семантики остается критически важным.