В чем разница между HTTP-статусами 200, 201 и 204?

«В чем разница между HTTP-статусами 200, 201 и 204?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Это коды успешного выполнения (2xx), но с разной семантикой.

  • 200 OK — стандартный ответ на успешный запрос. Сервер возвращает запрошенные данные в теле ответа. Используется для GET, а также для PUT или POST, когда нужно вернуть результат.
  • 201 Created — ресурс успешно создан в результате запроса (обычно POST или PUT). В заголовках ответа должен присутствовать Location с URI нового ресурса. Тело ответа может содержать данные созданного объекта.
  • 204 No Content — запрос выполнен успешно, но серверу нечего вернуть в теле ответа. Используется для операций, где возврат данных не требуется или не имеет смысла (например, DELETE, или POST/PUT, которые только обновляют состояние).

Практические примеры:

# 200 OK — получение данных
GET /api/users/1 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json

{"id": 1, "name": "Alice"}

# 201 Created — создание ресурса
POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Bob"}

HTTP/1.1 201 Created
Location: /api/users/2
Content-Type: application/json

{"id": 2, "name": "Bob"}

# 204 No Content — успешное удаление
DELETE /api/users/2 HTTP/1.1
HTTP/1.1 204 No Content