Ошибки FastAPI: валидация, зависимости, база и тесты

Маршрут работает в Swagger, но приложение возвращает 500 при дубликате, принимает лишний фильтр или проходит тест без настоящей проверки прав. Начинайте с места, где запрос отклонился от ожидаемого поведения: вход, зависимость, база или ответ. Ниже — разборы с небольшими примерами и переходы к открытым урокам. Можно выбрать отдельную проблему или пройти весь путь запроса.

Запрос не дошёл до нужного обработчика

Запишите метод, путь и фактический статус ответа. Ответ 404, редирект и ошибка 422 требуют разных проверок. Если сервер ещё не запускается, сначала соберите минимальное приложение и убедитесь, что обращаетесь к зарегистрированному маршруту.

Запустить первый GET через Uvicorn и проверить /docs.

Клиент вошёл, но получил лишние данные

Разделите извлечение данных для входа, определение пользователя и проверку доступа к конкретной записи. Скрытый маршрут или отдельная модель ответа решают только часть задачи. Для проверки полезны два пользователя и попытка прочитать чужой ресурс.

Разобрать текущего пользователя как dependency.

Запись в базе и ответ API разошлись

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

Задачи на транзакции SQLAlchemy и ошибки API.

Тест зелёный, а ошибка осталась

Выполните запрос через клиент, проверьте тело ответа и значимое состояние после отказа. Отдельно убедитесь, что тест не подменяет именно тот участок, который вы хотели проверить.

Первый тест API через TestClient.

Продолжить обучение

Чтобы связать эти проверки в одном приложении, откройте бесплатный курс FastAPI с базой данных и тестами. В программе есть маршруты, модели Pydantic, SQLAlchemy, зависимости и авторизация. Для начала выберите урок по своей проблеме; затем продолжайте собирать API последовательно.

Продолжить на практике