我有一个枚举类来存储一些像这样的分类值。
class Fields(str, Enum):
text = "text"
para = "para"
images = "images"
每种类型都有pydantic模型。例如:
class imageModel(BaseModel):
min_width : int
max_height : int
is_exact : int
is_proportional : int
default_mode : int
default_quality : int
我有这样的字典:
type_attrs = {
"text": textModel,
"para": ParaModel,
"image": imageModel
}
我有一个FastAPI路由,用户需要输入字段类型名称作为字符串(从FastAPI文档中的下拉列表),并根据选择的类型提供类型属性。如果用户选择type=“images”,则会提供相应的pydantic模型“ImageModel”供用户填写,以此类推。
选择类型名称后,有没有办法产生对应的pydantic模型?
谢谢你。
您可以将Union
或List
与您的
从留档:
您可以将响应声明为两种类型的联合,这意味着响应将是这两种类型中的任何一种。
使用联合
from typing import Union
@app.get("/my_path", response_model=Union[FirstModel, SecondModel])
使用列表
from typing import List
@app.get("/my_path", response_model=List[FirstModel, SecondModel])
我认为FastAPI不能支持这种类型的功能。基本上,您需要的是基于Fields枚举的输入进行动态swagger模型渲染。我认为,这需要一个钩到招摇的页面上。基本上,整个swagger页面是在api运行时静态构建的。我建议您将Fields枚举拆分为同一路径上的不同路径。
class imageModel(BaseModel):
min_width: int
max_height: int
is_exact: int
is_proportional: int
default_mode: int
default_quality: int
@app.post("/image")
def image(image: imageModel):
print(image)
return None
问题内容: 这个想法是在某些情况下从另一个来源获取数据,所以我有这个存根: 失败了 [$ injector:cdep]找到循环依赖项:拦截器<-$ http 还尝试注入$ injector并使用它获取$ http,结果相同。有任何想法吗? .config就是声明: 问题答案: 注入到: 用它来获取回调函数中返回的对象。 这是一个例子
问题内容: 我正在尝试在机器上安装python 。当我尝试将软件包安装为时。我收到以下错误。 然后我按我的方式提出并安装了请求。但是仍然无法安装。请让我知道我在做什么错误。在此先感谢 问题答案: 该库需要Python 3.3或更高版本 : 要求 […] 第一个软件要求是Python 3.3或更高版本。使用该库是必需的。 和从Trove分类器: 编程语言:: Python 编程语言:: Python
今天调用了一个接口,接口要求传一个日期过去,当时没仔细看(因为文档也没写请求参数和相应参数),以为是传一个data,里面有条件查询的参数之类的,结果第一次报错。 Required request parameter 'date' for method parameter type String is not present(方法参数类型字符串所需的请求参数“日期”不存在) 后面第二次调用的时候注意
我正在使用JSF2.2,并配置了servlet过滤器。过滤器中工作的部分代码: 如果我添加第二个param-常规请求可以工作(发生重定向并看到两个param),但AJAX请求不能工作(没有重定向,什么也不发生)。以下是Firebug报告: 这是如何造成的,我们如何在filter中为AJAX调用设置多个参数?
问题内容: 在swift 3中建议使用带参数的GET的哪种方法? 范例: 提前致谢 ! 问题答案: 示例如何使用请求。
问题内容: 我已经构建了一种通过$ http返回资源的复杂方法。 该方法返回一个Promise,然后检查资源是否存在我的本地缓存。如果这样做,它将返回缓存的资源,否则,将发出$ http请求。在资源被缓存后,这种方法效果很好,但是在整个应用程序中,我有多种功能正在按此方法加载,并且每个函数都会发出http请求,因为资源尚未返回和缓存。 我想出了一个简单的检查方法来解决此问题,但我觉得应该有一个更好