← Назад к вопросам

Какой статус приходит от сервера при успешном выполнении запроса?

2.0 Middle🔥 111 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Статусные коды 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-статусами, но понимание их семантики остается критически важным.