Hostme | Ошибки и коды ответов

Ошибки и коды ответов

Обновлено: 2026-06-24 17:30 MSK

API использует стандартные HTTP-коды ответа. Тело ошибки — в формате ProblemDetails (RFC 7807, стандарт ASP.NET Core).

HTTP-коды

КодЗначениеКогда
200 OKУспехЗапрос выполнен, тело содержит результат
201 CreatedСозданоРесурс создан
400 Bad RequestОшибка валидацииНекорректное тело/параметры запроса
401 UnauthorizedНе аутентифицированТокен отсутствует, истёк или недействителен
402 Payment RequiredТребуется оплатаДействие недоступно на текущем тарифе/балансе
403 ForbiddenНет правНет доступа к ресторану или действию
404 Not FoundНе найденоРесурс с таким идентификатором отсутствует
409 ConflictКонфликтДубликат / конфликт состояния (например, повторное создание)
410 GoneИстеклоРесурс/код больше недействителен
423 LockedЗаблокированоРесурс временно заблокирован
429 Too Many RequestsСлишком частоПревышен лимит запросов — нужен бэкофф
503 Service UnavailableНедоступноВременная недоступность — повторить позже

Формат тела ошибки

Ответ с ошибкой — объект ProblemDetails:

{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "detail": "Описание проблемы",
  "instance": "/api/rsv/admin/restaurants/123/reservations"
}
ПолеТипОписание
typestringСсылка на тип проблемы
titlestringКраткое название ошибки
statusintegerHTTP-код
detailstringДетальное описание (если есть)
instancestringПуть запроса, вызвавшего ошибку

Объект допускает дополнительные поля (additionalProperties) — например, при ошибках валидации может присутствовать словарь errors с разбивкой по полям.

Рекомендации по обработке

  • 401 — получите новый токен и повторите запрос. Не считайте 401 за «ресурс не найден».
  • 403 — проверьте, что учётная запись имеет доступ к данному restaurantId.
  • 400 — читайте detail/errors; чините запрос, не повторяйте его «как есть».
  • 404 — проверьте идентификаторы в пути (особенно строковые ID брони/гостя).
  • 409 — вероятен дубль; перед повтором проверьте, не создан ли ресурс (GET).
  • 429 / 503 — повторяйте с экспоненциальной задержкой (backoff), а не сразу.

Повторные попытки (retry)

КодПовторять?Как
429, 503ДаЭкспоненциальный бэкофф (например, 1s → 2s → 4s), с ограничением попыток
5xx (прочие)ОсторожноТолько идемпотентные GET; для POST — сначала проверить, не создалось ли
400, 401, 403, 404, 409НетЭто ошибки запроса/прав — повтор без изменений не поможет

При повторе POST-запросов на создание убедитесь, что не создаёте дубликат — см. Соглашения → Идемпотентность.