在 FastAPI 中,你可以使用依赖项(Dependencies)来处理路径操作的参数。依赖项是一个函数,它在执行路径操作之前执行,可以用于获取或验证参数,执行某些逻辑,或者提供共享的资源。依赖项可以在路径操作函数的参数中声明,并在运行时由 FastAPI 处理。

以下是一个使用依赖项的示例:
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.zyzy.cn/article/detail/13933/FastAPI