FastAPI для начинающих: API с базой данных и тестамиПервый работающий APIПроект FastAPI и первый GET

Проект FastAPI и первый GET

Уроки курсаПроект FastAPI и первый GET

Декоратор связывает GET с Python-функцией

Чтобы FastAPI знал, какую функцию вызывать при запросе GET /api/rooms, используется декоратор. Декоратор — это строка над функцией, начинающаяся с @. Она передаёт функцию другому коду ещё в момент определения, до любых запросов.

@app.get("/api/rooms") регистрирует в объекте app связь: метод GET плюс путь /api/rooms → функция, которая написана сразу под декоратором. Имя функции при этом не задаёт URL.

Вот полный main.py для каталога переговорных:

from fastapi import FastAPI

app = FastAPI()

@app.get("/api/rooms")
def list_rooms():
    return [{"id": 1, "name": "Лондон", "floor": 2}]

Когда приходит запрос GET /api/rooms, FastAPI вызывает list_rooms(). Функция возвращает обычный Python-список со словарём внутри. FastAPI автоматически сериализует его в JSON и добавляет заголовок Content-Type: application/json. Код ответа по умолчанию — 200.

Путь /api/rooms выбран произвольно для этого примера — никакого особого смысла в FastAPI он не несёт. Можно было написать /rooms или /v1/rooms; декоратор зарегистрирует любую строку пути.

В предыдущем уроке мы разбирали JSON как формат в теле HTTP-ответа. Здесь FastAPI делает эту работу сам: вы возвращаете Python-данные, а список становится JSON-массивом [{"id":1,"name":"Лондон","floor":2}] в теле ответа.

Запись main:app указывает на модуль main.py и объект app. Декоратор app.get связывает GET /api/rooms с list_rooms. Функция возвращает список со словарём; FastAPI преобразует его в JSON-ответ со статусом 200.
main:app выбирает объект app из main.py. Декоратор связывает запрос с функцией, а FastAPI превращает её результат в JSON.