【发布时间】:2022-08-05 17:45:35
【问题描述】:
我的端点之一应该是可分页的。它本质上只是一个外部 API 的包装器,因此不幸的是有一些变通方法。
但是,我想知道如何通过查询参数设置params: Params。
我希望有参数page 和size 可以在/search?page=2&size=10 中声明它们。
由于我找不到一个例子,我想我可能会问。
@search_router.get(\"/search\")
def search(query: str, params: Params = Params(size=20), response_model=Page[dict]):
result = ris_client.service.SearchDocuments({
\"DokumenteProSeite\": PAGE_SIZE[params.size],
\"Seitennummer\": params.page
})
results = result[\"results\"]
hits = results[\"hits\"]
content = results[\"references\"]
return paginate(
content,
params,
length_function=lambda _: int(hits[\"value\"])
)
我知道我可以像这样自己公开这些参数:
@search_router.get(\"/search\")
def search(query: str, size: int = 20, page: int = 0, response_model=Page[dict]):
params = Params(size=size, page=page)
# ...
return paginate(
content,
params,
length_function=lambda _: int(hits[\"value\"])
)
但是为什么我几乎在每个教程的函数签名中都看到了Params 类?
-
我猜当你看到
params: Params时,它被分配了= Depends()?即如 fastapi-pagination 教程中所示(因为您没有指定Params类的来源)。response_model也是视图装饰器 (.get) 的参数,而不是视图函数本身的参数。
标签: fastapi