Также по аналогии мы можем передавать несколько параметров в 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.