FastAPI позволяет работать с параметрами запроса, которые передаются в URL-адресе в качестве строки запроса. Для этого необходимо использовать декоратор @app.get() и определить параметры запроса в качестве аргументов функции обработчика.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
В этом примере мы определяем функцию обработчика read_items(), которая принимает два параметра skip и limit. Если эти параметры не переданы в URL-адресе, то используются значения по умолчанию (skip=0, limit=10).
Работа с параметрами запроса типа bool
FastAPI поддерживает передачу параметров запроса типа bool. Для этого необходимо использовать тип данных bool и указать значение по умолчанию.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(needs_order: bool = False):
if needs_order:
return {"message": "The client needs an order"}
return {"message": "The client doesn't need an order"}
В этом примере мы определяем функцию обработчика read_items(), которая принимает параметр needs_order типа bool. Если параметр передан в URL-адресе и равен True, то функция возвращает сообщение «The client needs an order». В противном случае возвращается сообщение «The client doesn’t need an order».
Работа с параметрами запроса типа список
FastAPI также поддерживает передачу параметров запроса типа список. Для этого необходимо использовать тип данных List и указать значение по умолчанию.
from typing import List
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(q: List[str] = []):
return {"q": q}
В этом примере мы определяем функцию обработчика read_items(), которая принимает параметр q типа List[str]. Если параметр передан в URL-адресе, то он будет содержать список значений. В противном случае будет использоваться пустой список.
Работа с параметрами запроса типа enum
FastAPI поддерживает передачу параметров запроса типа enum. Для этого необходимо использовать модуль enum и указать список возможных значений.
from enum import Enum
from fastapi import FastAPI
class ModelName(str, Enum):
alexnet = "alexnet"
resnet = "resnet"
lenet = "lenet"
app = FastAPI()
@app.get("/models/{model_name}")
async def read_item(model_name: ModelName):
if model_name == ModelName.alexnet:
return {"model_name": model_name, "message": "AlexNet model"}
if model_name == ModelName.resnet:
return {"model_name": model_name, "message": "ResNet model"}
if model_name == ModelName.lenet:
return {"model_name": model_name, "message": "LeNet model"}
В этом примере мы определяем класс ModelName, который является подклассом str и перечислением enum. Затем мы определяем функцию обработчика read_item(), которая принимает параметр model_name типа ModelName. Если значение параметра соответствует одному из значений в перечислении, то возвращается соответствующее сообщение.
Работа с параметрами запроса типа UUID
FastAPI также поддерживает передачу параметров запроса типа UUID. Для этого необходимо использовать модуль uuid.UUID.
from uuid import UUID
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: UUID):
return {"item_id": item_id}
В этом примере мы определяем функцию обработчика read_item(), которая принимает параметр item_id типа UUID. Если параметр передан в URL-адресе, то функция возвращает значение параметра.
Работа с параметрами запроса типа datetime
FastAPI поддерживает передачу параметров запроса типа datetime. Для этого необходимо использовать модуль datetime.datetime.
from datetime import datetime
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int, start_date: datetime, end_date: datetime):
return {"item_id": item_id, "start_date": start_date, "end_date": end_date}
В этом примере мы определяем функцию обработчика read_item(), которая принимает параметры item_id типа int, start_date и end_date типа datetime. Если параметры переданы в URL-адресе, то функция возвращает их значения.
Это лишь некоторые примеры работы с параметрами запроса в FastAPI. Он предоставляет множество возможностей для работы с параметрами и их валидации, что делает создание веб-приложений быстрым и удобным.