FastAPI
FastAPI
is a modern and fast web framework for Python.
pydantic-filters
provides several features for integrations:
FilterDepends
,
PaginationDepends
and
SortDepends
.
Each of the functions unpacks the pydantic model and convert pydantic.FieldInfo
fields to fastapi.Query
.
Example¶
from enum import Enum
from typing import List, Optional
from fastapi import FastAPI
from pydantic_filters import BaseFilter, BaseSort, FilterField, OffsetPagination, SearchField
from pydantic_filters.plugins.fastapi import FilterDepends, PaginationDepends, SortDepends
class DepartmentFilter(BaseFilter):
chef_id: List[int] = FilterField(description="Here is the related field!!!")
class UserFilter(BaseFilter):
login: List[str]
age__lt: int = FilterField(gt=0, le=100)
q: str = SearchField(target=["login", "name", "email"])
# Related filter!
department: DepartmentFilter
class UserSortByEnum(str, Enum):
id = "id"
login = "login"
age = "age"
class UserSort(BaseSort):
sort_by: Optional[UserSortByEnum] = None
app = FastAPI()
@app.get("/users")
async def get_multiple_users(
filter_: UserFilter = FilterDepends(UserFilter),
pagination: OffsetPagination = PaginationDepends(OffsetPagination),
sort: UserSort = SortDepends(UserSort),
):
...
Tip
As of FastAPI>=0.115
,
the PaginationDepends
and
SortDepends
functions can be replaced by
Annotated[PaginationOrSortSchema, fastapi.Query()]
.