2.4 Маршрутизация в FastAPI
15 из 15 шагов пройдено
38 из 38 баллов  получено

Также по аналогии мы можем передавать несколько параметров в URL-адресе. Изменим наш код, добавив несколько параметров:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def welcome() -> dict:
    return {"message": "Hello World"}


@app.get("/hello/{first_name}/{last_name}")
async def welcome_user(first_name: str, last_name: str) -> dict:
    return {"user": f'Hello {first_name} {last_name}'}

Теперь если мы перейдем по адресу http://127.0.0.1:8000/hello/Ilya/perminov, то увидим следующий вывод.

Мы также можем объявить другой тип параметра пути в функции, используя стандартные аннотации типов Python.

@app.get("/order/{order_id}")
async def order(order_id: int) -> dict:
    return {"id": order_id}

В результате получим вывод:

Обратите внимание на значение 7, которое получила (и вернула) функция. Это целочисленное значение Python (int), а не строка "7". И теперь если мы попробуем перейти по адресу http://127.0.0.1:8000/order/test, то увидим следующую ошибку:

{
    "detail": [
        {
            "type": "int_parsing",
            "loc": [
                "path",
                "order_id"
            ],
            "msg": "Input should be a valid integer, unable to parse string as an integer",
            "input": "test",
            "url": "https://errors.pydantic.dev/2.5/v/int_parsing"
        }
    ]
}

FastAPI обеспечивает проверку типов, используя всё те же аннотации типов. Обратите внимание, что в тексте ошибки явно указано место не прошедшее проверку. Это очень полезно при разработке и отладке кода, который взаимодействует с API.


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