浏览之前,倡议先看这个参考文档:python 如何查看一个函数的参数

先来看看官网样例: Depends for function

https://fastapi.tiangolo.com/zh/tutorial/dependencies/#_3

如果是其余的呢?
比方如何给 Depends 传递的是:

  • class?
  • classs instance?

Depends for class

from typing import Any, Optional, Listimport uvicornfrom fastapi import FastAPI, Form, Query, Dependsfrom fastapi import Dependsapp = FastAPI()class AddressFilter():    def __init__(self, school: str | None = None) -> None:        pass@app.get('/')async def list_object(    address_filter: AddressFilter = Depends(AddressFilter),):    return {}if __name__ == "__main__":    uvicorn.run(        app='api:app',        host="127.0.0.1",        port=9950,        workers=1,        reload=True    )

把须要让 openAPI 显示的字段,增加在 class 的 __init__

Depends for class instance

from typing import Any, Optional, Listimport uvicornfrom fastapi import FastAPI, Form, Query, Dependsfrom fastapi import Dependsapp = FastAPI()class AddressFilter():    def __call__(self, school: str | None = None, grade: int = 1) -> None:        passaf = AddressFilter()@app.get('/')async def list_object(    address_filter: AddressFilter = Depends(af),):    return {}if __name__ == "__main__":    uvicorn.run(        app='api:app',        host="127.0.0.1",        port=9950,        workers=1,        reload=True    )

把须要让 openAPI 显示的字段,增加在 class instance 的 __call__

仍然能够失常显示

以 fastapi_filter 举例

fastapi_filter:

  • 官网:https://fastapi-filter.netlify.app/
  • github 地址:https://github.com/arthurio/fastapi-filter
  • pypi 地址:https://pypi.org/project/fastapi-filter/

fastapi_filter 用的是 class 计划,动静生成 class