首页 > 解决方案 > 如何在 FastAPI 中将查询参数的模式编写为变量

问题描述

我有一个 get 函数,它接受多个查询参数,可能如下所示:

def get(
   key: Optional[str] = "key"
   value: Optional[str] = "value"
   param1: Optional[int] = -1
)

我想做的是,我想把这些参数定义放在一个单独的变量中。有可能做这样的事情吗?

param_definition = { # some struct here, or maybe a Model class
   key: Optional[str] = "key"
   value: Optional[str] = "value"
   param1: Optional[int] = -1
}


def get(*params: param_definition):
   ...

这可以做到吗?如果没有,这里有什么类似的和更可维护的东西吗?

标签: pythonapifastapi

解决方案


您可以将 Pydantic 模型与Depends()类作为

from fastapi import FastAPI, Depends
from pydantic import BaseModel
from typing import Optional

app = FastAPI()


class MyParams(BaseModel):
    key: Optional[str] = "key"
    value: Optional[str] = "value"
    param1: Optional[int] = -1


@app.get("/")
def my_get_route(params: MyParams = Depends()):
    return params

这也会自动为我们生成API 文档。

参考:使用 Pydantic 模型的 FastAPI 查询参数


推荐阅读