FastAPI 官方文档解读 (二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastAPI 官方文档解读 (二)相关的知识,希望对你有一定的参考价值。

参考技术A

之前我们提到过, Query Path 可以进行字段验证,对长度和取值范围等进行限制。 Body 中的JSON字段也具有同样的验证,只不过需要声明在 Model 中,而不是参数中。

使用 Field() 可以很好地满足我们的需求。

tags: list = [] 表示普通的列表验证,如果我们想要统一的类型(像数组那样),我们可以使用 typing 的 List 来表示,例如 tags: List[str] = [] 。
你过你要求数据不重复,那么也可以试试 set ,用 typing 中的 Set 来表示 tags: Set[str] = set()

使用model作为另一个model中字段的类型也是可以的。并且这也将很常用。

pydantic 提供了一些定义好的特殊类型,方便对各种内容进行验证。

UrlStr 便是一种可以验证合法URL的预置类型

如果您希望Body中的JSON,最外层是一个列表。那么您需要在参数中像如下一样定义类型。

除了Model,您也可以使用dict来接收Body。

这种形式的类型标注,即可用字典来接收。当然JSON不支持int类型的key,不用担心,fastapi会自动转换。

def read_items(*, ads_id: str = Cookie(None)): 像这样声明,即可获取Cookie参数。第一个值为默认值。

def read_items(*, user_agent: str = Header(None)): 可以接收Header中的参数。如果Header的一个字段具有多个值,可以使用 def read_items(x_token: List[str] = Header(None)): 这种形式

关于这部分内容,请看前面关于fastapi源码的解读。

pydantic 的model提供了 .dict() 方法,可以将字段导出为字典。这样便实现模型之间的转换。例如:

这两个model之间的差别只有password,UserIn的定义需要如下形式

而UserOut使用 dict() 导出可能是如下形式

我们只需要 user_in = UserIn(**user_out.dict(), password="secret") 便可达到效果
反过来转换, UserIn 的dict中多余的参数,会被 UserOut 忽略掉。

Union[PlaneItem, CarItem] 使得response有更多的选择余地。像 response_model=List[Item] 也是被允许的

= Form(...) ,该类继承于 Body ,用法一致。

以上是关于FastAPI 官方文档解读 (二)的主要内容,如果未能解决你的问题,请参考以下文章

FastApi学习

Spring 总览及 IOC 容器的使用 —— Spring 官方文档解读

从官方文档去学习之FreeMarker

小程序官方文档解读:如何才能避免违反微信规则

关于对PyTorch中nn.Linear的官方API文档解读

AI | 图神经网络-Pytorch Biggraph简介及官方文档解读