如何在名称中带有连字符的 FastApi-SwaggerUI 中键入变量?
how to type a variable in FastApi-SwaggerUI with hyphen in its name?
如果我向这个 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,它说明了响应的字段。
我的问题是,如何在 Swagger 文档中使用相同的漂亮输入来获取此 json 文件 {"var-name1": "a"}
(这是一个连字符而不是下划线)?
显然,我无法在响应数据类中命名 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
选项以允许使用字段名称创建对象,没有它您只能使用别名实例化它。
如果我向这个 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,它说明了响应的字段。
我的问题是,如何在 Swagger 文档中使用相同的漂亮输入来获取此 json 文件 {"var-name1": "a"}
(这是一个连字符而不是下划线)?
显然,我无法在响应数据类中命名 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
选项以允许使用字段名称创建对象,没有它您只能使用别名实例化它。