python - 如何在 FastAPI 中将查询参数的模式编写为变量

标签 python api fastapi

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

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):
   ...

这可以做到吗?如果没有,是否有类似且更易于维护的事情可以在这里完成?

最佳答案

您可以将 Pydantic 模型与 Depends() 类一起使用

from fastapi import FastAPI, <b>Depends</b>
from pydantic import BaseModel
from typing import Optional

app = FastAPI()


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


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

这还将生成 API doc自动为我们服务。

引用号:FastAPI query parameter using Pydantic model

关于python - 如何在 FastAPI 中将查询参数的模式编写为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67814772/

相关文章:

python - 对如何执行遥测的怀疑:使用开发板和笔记本电脑

c# - API 调用 C# 中找不到文件时返回错误代码

java - 如何在eclipse动态web项目中使用rest api?

python - 使用无限循环时 FastAPI 异步路由死锁错误

python - 将 datetime 转换为 Unix 时间戳并将其转换回 python

python - 在 python 2 中将 int 时间戳转换为 datetime 时遇到问题

python - 属性错误 : module 'google.cloud.vision' has no attribute 'types'

python - 取消 fastAPI websocket 中剩余的三重托儿任务的正确方法?

fastapi - pydantic 模式 可选

python - 如何将 Matplotlib.pyplot 中的绘图插入到 FPDF 文档中?