以下是一个使用依赖项的示例:
from fastapi import FastAPI, Depends, HTTPException
app = FastAPI()
# 定义一个依赖项函数
def get_query_parameter(q: str = None):
return q
# 使用依赖项作为参数
@app.get("/items/")
def read_item(q: str = Depends(get_query_parameter)):
return {"q": q}
在这个例子中,get_query_parameter 是一个依赖项函数,它获取查询参数 q。然后,read_item 路径操作函数使用 Depends 来声明依赖项,并将 get_query_parameter 作为参数传递进去。在运行时,FastAPI 会自动调用 get_query_parameter 函数,并将其返回值作为 q 参数传递给 read_item。
你还可以使用多个依赖项,它们将按照声明的顺序依次执行。下面是一个使用多个依赖项的示例:
from fastapi import FastAPI, Depends, HTTPException
app = FastAPI()
# 定义两个依赖项函数
def get_query_parameter(q: str = None):
return q
def process_query_parameter(q: str = Depends(get_query_parameter)):
if q is None:
raise HTTPException(status_code=400, detail="Query parameter 'q' is required")
return q.upper()
# 使用多个依赖项
@app.get("/items/")
def read_item(q_processed: str = Depends(process_query_parameter)):
return {"q_processed": q_processed}
在这个例子中,process_query_parameter 依赖项函数依赖于 get_query_parameter。如果 get_query_parameter 返回了有效的查询参数,process_query_parameter 将对其进行进一步处理(在这里是将其转换为大写)。如果查询参数不存在,process_query_parameter 将抛出一个 HTTP 异常。
依赖项是 FastAPI 中强大且灵活的一个特性,可以用于很多不同的场景,例如身份验证、数据库连接管理、共享状态等。通过使用依赖项,你可以清晰地组织和重用代码,使 API 的实现更加模块化。
转载请注明出处:http://www.pingtaimeng.com/article/detail/13933/FastAPI