Краткий справочник

Шпаргалка по RESTful API

Краткий справочник по RESTful API: семантика HTTP-методов, коды состояния, формат ошибок JSON, заголовки и идемпотентность.

· Опубликовано

REST (Representational State Transfer) — это архитектурный стиль проектирования сетевых веб-API сервисов поверх протокола HTTP.

HTTP-методы и их семантика

Метод Целевое действие Безопасен Идемпотентен
GET Получить представление ресурса Да Да
POST Создать новый подчинённый ресурс Нет Нет
PUT Полностью заменить представление ресурса Нет Да
PATCH Частично обновить свойства ресурса Нет Нет
DELETE Удалить ресурс Нет Да
HEAD Получить заголовки без тела ответа Да Да
OPTIONS Запросить поддерживаемые HTTP-методы конечной точки Да Да

Распространённые коды ответа HTTP

Успех (2xx)

  • 200 OK: Запрос выполнен успешно (тело содержит представление).
  • 201 Created: Ресурс успешно создан (заголовок Location указывает URI).
  • 202 Accepted: Запрос принят в асинхронную обработку.
  • 204 No Content: Действие выполнено, тело ответа отсутствует (обычно для DELETE).

Ошибки клиента (4xx)

  • 400 Bad Request: Некорректный синтаксис, параметры или ошибка валидации.
  • 401 Unauthorized: Аутентификация отсутствует или недействительна.
  • 403 Forbidden: Пользователь аутентифицирован, но не имеет прав доступа к ресурсу.
  • 404 Not Found: URI ресурса не существует.
  • 409 Conflict: Запрос конфликтует с текущим состоянием ресурса (напр., дубликат ключа).
  • 422 Unprocessable Entity: Синтаксически верный запрос не прошёл семантическую валидацию.
  • 429 Too Many Requests: Превышен лимит частоты запросов (Rate Limit).

Ошибки сервера (5xx)

  • 500 Internal Server Error: Общая необработанная ошибка на стороне сервера.
  • 502 Bad Gateway: Вышестоящий сервер (Upstream) вернул некорректный ответ.
  • 503 Service Unavailable: Сервер перегружен или находится на обслуживании.

Стандартная обёртка ошибки JSON

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The email address provided is already registered.",
    "details": [
      {
        "field": "email",
        "issue": "unique_constraint_violated"
      }
    ]
  }
}

Ссылки

Связанные темы