FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.8+ 并基于标准的 Python 类型提示。
FastAPI 站在以下巨人的肩膀之上:
- Starlette 负责 web 部分。
- Pydantic 负责数据部分。
毕竟我们不是学习 Starlette 和 Pydantic 的,但我们至少需要了解 Starlette 和 Pydantic ,知道他们各自的作用是什么,毕竟 FastAPI 是在这两者的基础上进行开发的。如果你之前了解 Starlette 或者 Pydantic,学习 FastAPI 也会更加的得心应手。
Starltette:
FastAPI 和 Starlette 完全兼容的。FastAPI
实际上是 Starlette
的一个子类。所以,如果你已经知道或者使用 Starlette,大部分的功能会以相同的方式工作。所以在一定程度上可以认为 FastAPI 是加强版的 Starlette
。通过 FastAPI 可以获得 Starlette 所有特性
Starlette是一个轻量级的异步Web框架,专注于构建高性能、异步的Web应用程序和API。它具有以下主要作用:
- 异步处理:Starlette基于异步协程编程模型,使用Python的
async
和await
关键字来编写异步代码。这使得Starlette能够处理并发请求和非阻塞I/O操作,提供出色的性能和可伸缩性。 - Web应用程序开发:Starlette提供了一套简洁而强大的API,用于处理HTTP请求和构建Web应用程序。它支持路由、请求和响应处理、模板渲染、静态文件服务等功能,使得开发Web应用程序变得简单和高效。
- 中间件支持:Starlette具有中间件机制,允许开发人员在请求和响应处理过程中插入自定义的中间件功能。这可以用于身份验证、请求日志记录、异常处理等,以实现更多的自定义和扩展性。
- WebSocket支持:Starlette提供了对WebSocket协议的内置支持,使得开发实时通信和长连接应用程序变得简单。它提供了WebSocket路由和事件处理器,方便处理WebSocket连接和消息。
- 集成支持:Starlette可以与其他常用的Python库和框架进行集成,如SQLAlchemy、Pydantic、Tortoise ORM等。这使得开发人员能够利用这些库和框架的功能来构建复杂的Web应用程序。
总的来说,Starlette是一个灵活、高性能的异步Web框架,适用于构建现代化的异步Web应用程序和API。它提供了简单而强大的API,同时支持中间件、WebSocket和集成,使得开发人员能够轻松构建高性能的Web应用程序。
Pydantic
FastAPI 和 Pydantic 完全兼容,包括基于 Pydantic 的外部库, 例如用于数据库的 ORMs, ODMs。
这也意味着在很多情况下,你可以将从请求中获得的相同对象直接传到数据库,因为所有的验证都是自动的。
反之亦然,在很多情况下,你也可以将从数据库中获取的对象直接传到客户端。同样通过 FastAPI,你可以获得所有 Pydantic 的特性
Pydantic是一个Python库,用于数据验证和解析,它提供了一种简单而强大的方法来定义数据模型和验证输入数据。Pydantic的主要作用包括以下几个方面:
- 数据验证和解析:Pydantic允许您定义数据模型,通过对模型进行类型声明和约束来验证输入数据的有效性。它可以自动验证和解析输入数据,确保数据的类型正确、字段存在、值符合规定的约束等。
- 数据序列化和反序列化:Pydantic支持将数据模型转换为字典、JSON字符串或其他格式,以便于数据的序列化和反序列化。它提供了简单的API来进行数据的转换,使得在不同的数据格式之间进行转换变得非常方便。
- 输入数据的自动转换和默认值:Pydantic可以根据定义的数据模型,自动将输入数据转换为指定的类型。它还支持在数据模型中为字段设置默认值,以便在缺少输入数据时提供默认值。
- 文档生成和API验证:Pydantic可以通过数据模型生成文档,包括字段的类型、约束和默认值等。这对于自动生成API文档和验证API请求和响应非常有用。
- 数据模型的嵌套和继承:Pydantic支持数据模型之间的嵌套和继承关系,使得可以构建复杂的数据结构和模型。这使得数据的组织和管理更加灵活和可扩展。
总的来说,Pydantic是一个用于数据验证和解析的Python库,可以帮助您定义数据模型、验证输入数据的有效性,并提供数据的序列化和反序列化功能。它简化了数据处理的过程,提供了一种简单而强大的方式来处理和验证数据。在Web开发、数据处理和API开发中,Pydantic经常被用于数据验证、表单处理和API输入输出的处理。