Кадры этой части сняты на версии 1.0.0. Заголовки, которые появились в 1.1.0, разобраны в части 13.
Swagger UI · /docsСКРИНШОТ · 15.09.2026
Шапка Service Desk API с версией 1.0.0 и отметкой OAS 3.1, группа Tickets, раскрытая операция GET /api/v1/tickets. Клик — увеличить.
56Swagger UI не является источником контракта
Swagger UI только отображает документ. Сам контракт — JSON по адресу /openapi.json.
http://127.0.0.1:8000/openapi.json
Найти "openapi": "3.1.0".
Найти "info" с названием и версией.
Найти "paths" со всеми адресами.
Swagger UI является визуальным представлением этого документа.
Если JSON отображается одной строкой, включите в Chrome флажок «Автоформатировать» над текстом.
Chrome · /openapi.jsonСКРИНШОТ · 15.09.2026
OpenAPI schema учебного проекта с автоформатированием: выделены "openapi": "3.1.0", "info" и "paths". Клик — увеличить.
57Один OpenAPI — разные интерфейсы документации
Открываем тот же контракт в другом интерфейсе и сравниваем.
http://127.0.0.1:8000/redoc
ReDoc показывает навигацию слева, описание в центре и примеры ответов справа. Отправлять запросы из него нельзя, зато длинный API удобнее читать.
Обе системы получают данные из одного API contract. Разница только в способе отображения.
Если /redoc пустой. FastAPI 0.115 подключает скрипт ReDoc по тегу redoc@next, а CDN по этому тегу больше не отдаёт файл. В учебном проекте версия закреплена явно: redoc@2.5.4 в app/main.py.
ReDoc · /redocСКРИНШОТ · 15.09.2026
ReDoc с Service Desk API: левая навигация, описание операции «Получить список обращений», примеры ответов 200 и 422. Клик — увеличить.
58Документируем API на уровне приложения
Метаданные задаются параметрами конструктора FastAPI в файле app/main.py.
Клиент не должен передавать id при создании: его формирует сервер. Благодаря extra="forbid" запрос с лишним полем id получит 422, это проверяет тест test_client_cannot_send_id.