Руководство по использованию кодов состояния в REST API

Предлагает практические критерии выбора подходящего кода состояния для каждой ситуации в REST API.

Хорошо спроектированный REST API чётко сообщает результат запроса с помощью кодов состояния. Для успешного чтения используйте 200 OK, для создания ресурса — 201 Created (новый URL в заголовке Location), а для успеха без тела ответа (например, при удалении) — 204 No Content.

Клиентские ошибки различают с помощью 4xx. Стандартно: 400 Bad Request для неверного синтаксиса, 401 Unauthorized, когда требуется аутентификация, 403 Forbidden при отсутствии прав, 404 Not Found для несуществующего ресурса, 409 Conflict при конфликте состояния, 422 Unprocessable Content при ошибке валидации и 429 Too Many Requests при слишком большом числе запросов.

О серверных ошибках сообщают с помощью 5xx. Для непредвиденного исключения используйте 500 Internal Server Error, для перегрузки или обслуживания — 503 Service Unavailable, по возможности отправляя вместе с ним заголовок Retry-After. Но важнее всего для удобства работы с API — всегда последовательно возвращать один и тот же код в одной и той же ситуации.