0

在下面的代码中,我创建了一个发布路由,无论输入如何,它都会发回相同的响应。

输入和输出是自动验证的,因为我在适当的地方引用了 pydantic BaseModel。

在您的文档中,您有如何修改响应代码的示例。

两个问题:

  • 如何在保留响应验证(我放置在装饰器中)的同时有条件地修改响应代码?

  • 我能做些什么来清理我的代码?为输入提供默认值的首选方法是什么?你能举个例子吗?

from pydantic import BaseModel
from pydantic import UrlStr, IPvAnyAddress

...

class Bar(BaseModel):
    url = UrlStr
    ip = IPvAnyAddress


@app.post('/foo', response_model=Bar)
async def foo_endpoint(request: Bar):
    response = Bar(**{ip='111.111.111.111', url='www.google.com'})
4

1 回答 1

0

您所说的“有条件地修改此处的响应代码”是什么意思,您能举个例子吗?

对于第二个问题,在 Pydantic 模型上设置默认值;

class FooBase(BarModel):
    attribute_x: Optional[str] = None
    attribute_y: Optional[bool] = False
    attribute_z: Optional[str] = None
于 2019-12-19T10:32:29.720 回答