python - 如何在 FastApi-SwaggerUI 中键入名称中带有连字符的变量?
问题描述
如果我向此 API 发送请求:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Response(BaseModel):
var_name: str
@app.put("/", response_model=Response)
def simple_server(a: str):
response = Response(var_name=a)
return response
我得到了这个 json 文件的响应{"var_name1": "a"}
。此外,我得到了一个非常漂亮的 Swagger UI,它说明了响应的领域。
我的问题是,我怎样才能{"var-name1": "a"}
在 Swagger 文档中以同样漂亮的类型获得这个 json 文件(这是用连字符而不是下划线)?
显然,我无法在 Response 数据类中命名该var_name
属性。var-name
解决方案
稍微修改你的 pydantic 对象:
from pydantic import BaseModel, Field
class Response(BaseModel):
var_name: str = Field(alias="var-name")
class Config:
allow_population_by_field_name = True
需要该allow_population_by_field_name
选项以允许使用字段名称创建对象,如果没有它,您只能使用别名来实例化它。
推荐阅读
- sql - sql - 在多列中搜索字符串的一部分
- javascript - 我应该如何从 PHP 中的 javascript 访问变量以执行某些操作?
- java - 如何在 git -java- 中使用 atom 文本编辑器
- javascript - 是否可以在 JavaScript 中创建不拥有其订阅的事件发射器?
- php - 有没有办法根据公共列减少mysql中的行数?
- python - python数据框操作
- android - 在 Google Play 管理中心找不到崩溃报告
- mysql - 无法连接到在 docker 中运行的 MySQL
- javascript - 如何在 javascript 中使用集合并获得相同的结果
- d3.js - d3.scaleLog 以 2 为底的刻度