Первый работающий API

Path-параметры и типы

Содержание курса

Неверный тип: ответ 422 до обработчика

Раз преобразование происходит до вызова функции, FastAPI может отклонить запрос ещё на входе — если значение не удаётся привести к нужному типу.

Отправьте GET /api/rooms/abc к маршруту с room_id: int. Строка "abc" не превращается в целое число, и функция get_room вообще не запускается. В ответ придёт статус 422 Unprocessable Entity и JSON с описанием проблемы:

{
  "detail": [
    {
      "type": "int_parsing",
      "loc": ["path", "room_id"],
      "msg": "Input should be a valid integer, unable to parse string as an integer",
      "input": "abc"
    }
  ]
}

Поле loc показывает источник: "path" — значит, ошибка в сегменте пути, "room_id" — конкретный параметр. Это удобно, когда параметров несколько и нужно быстро найти виновника.

422 отличается от ошибки, которая возникла бы внутри функции. Здесь тело обработчика не выполнялось вовсе: FastAPI остановил запрос до него. Это граница между некорректным входом и логикой приложения.

При room_id: int FastAPI преобразует строку 3 из пути в число 3 и вызывает get_room(3). Строка abc не проходит преобразование: возвращается 422, get_room не вызывается.
FastAPI проверяет и преобразует значение до вызова обработчика. Неверный тип даёт 422 без выполнения функции.