Базовая маршрутизация FastAPI

В FastAPI базовая маршрутизация является ключом к определению конечных точек API.

Каждый маршрут сопоставляется с функцией в приложении, которая обрабатывает конкретный HTTP-запрос и возвращает соответствующий ответ.

Маршрут корневого пути

Создайте экземпляр FastAPI и маршрутизацию корневого пути:

Пример

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

Пояснение к коду:

  • FastAPI(): Создаёт экземпляр приложения FastAPI.
  • @app.get("/"): Использовать@app.getДекоратор создаёт маршрут, который обрабатывает корневой путь.
  • def read_root(): Функция-обработчик маршрута возвращает словарь, содержащий {"Hello": "World"}.

Параметр пути

Задайте параметры маршрута:

Пример

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

Пояснение к коду:

  • @app.get("/items/{item_id}"): Определяет путь маршрута, где{item_id}— это параметр пути, соответствующий параметру функцииitem_id。
  • def read_item(item_id: int, q: str = None): Функция-обработчик маршрута принимает целочисленный параметр путиitem_idи необязательный строковый параметр запросаq。

В операциях маршрута параметры запроса можно объявлять с помощью параметров функции. Например,q: str = NoneОзначает, чтоqявляется необязательным строковым параметром запроса со значением по умолчаниюNone。

Запустите приложение и протестируйте маршруты

Запустите приложение с помощью Uvicorn:

uvicorn main:app --reload

Посетитеhttp://127.0.0.1:8000Просмотрите ответ корневого пути:

Посетите http://127.0.0.1:8000/items/42?q=example, чтобы увидеть ответ с параметрами пути и параметрами запроса:

Интерактивная документация API, автоматически создаваемая FastAPI, будет включать информацию об определённых маршрутах, параметрах пути, параметрах запроса и т. д. Посетите URL документации.http://127.0.0.1:8000/docsПросмотрите подробную документацию и интерфейс тестирования:

Другие расширения