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

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

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

Переговорная по идентификатору

Roomly — небольшой сервис для управления переговорными комнатами в офисе. Все переговорные уже загружены в единый словарь rooms_by_id, и общий список доступен любому желающему через уже работающий маршрут каталога. Однако просматривать каждый раз весь список ради одной комнаты неудобно: нужен способ обратиться к конкретной переговорной напрямую, зная только её числовой идентификатор.

Именно для этого требуется отдельный маршрут, который принимает идентификатор как часть адреса и возвращает сведения об одной выбранной переговорной. Оба маршрута — и каталог, и запрос по идентификатору — работают с одним и тем же rooms_by_id, никакого дополнительного хранилища или дублирующего списка в системе нет.

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

Что уже дано

В редакторе открыт самодостаточный main.py с объектом верхнего уровня app, единым словарём rooms_by_id и рабочим маршрутом списка GET /api/rooms. Оба маршрута этой лабораторной должны читать только rooms_by_id; второго списка или хранилища нет. Перед файлом выполняется видимый служебный переходник проверки: он определяет функции для запросов и чтения состояния, но не создаёт приложение или данные каталога. Менять переходник не нужно.

Что нужно сделать

Самостоятельно объявите декоратор и функцию-обработчик для GET /api/rooms/{room_id}. Имя переменного сегмента должно совпадать с именем аргумента, а room_id должен быть аннотирован как int. Для существующего идентификатора верните соответствующий словарь из rooms_by_id. В лабораторной проверяются только существующие целочисленные id; поведение для отсутствующего целочисленного id не задаётся.

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно. После вашего кода проверяющая система читает объекты верхнего уровня app и rooms_by_id и отправляет запросы через TestClient. Она проверяет статусы и JSON-ответы; нечисловое значение в path должно быть автоматически отклонено FastAPI статусом 422 до вызова обработчика.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

РешениеPython · Python 3.12 (web: FastAPI, SQLAlchemy, pytest)
Как проверяется решение

Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.