开发人员一直在寻找能够快速有效地构建复杂 API 和在线应用程序的技术。FastAPI 是Python Web 框架领域的一个相对较新的补充,由于其速度、简单性和开发人员友好的特性而迅速受到关注。在本文中,我们将介绍 FastAPI,并解释为什么它已成为开发 Web 应用程序和 API 的流行替代方案。
什么是 FastAPI?
FastAPI 是一个现代 Web 框架,速度相对较快,用于基于标准 Python 类型提示使用 Python 3.7+ 构建 API。FastAPI还帮助我们自动为我们的Web服务生成文档,以便其他开发人员可以快速了解如何使用它。本文档简化了 Web 服务的测试,以了解它需要哪些数据以及它提供什么。FastAPI 具有许多功能,例如它可以显着提高开发速度,还可以减少代码中的人为错误。它很容易学习并且完全可以用于生产。FastAPI 与众所周知的 API 标准(即OpenAPI 和JSON schema)完全兼容。
FastAPI的特点
- 自动文档: FastAPI 使用 OpenAPI 标准自动生成交互式 API 文档。可以通过访问应用程序中的特定端点来访问此文档,这使得理解和测试 API 变得非常容易,而无需手动编写大量文档。
- Python 类型提示:FastAPI 的突出功能之一是它使用 Python 类型提示。通过使用类型提示注释函数参数和返回类型,不仅可以提高代码可读性,还可以使 FastAPI 自动验证传入数据并生成准确的 API 文档。此功能使我们的代码不易出错并且更加自我记录。
- 数据验证: FastAPI 使用 Pydantic 模型进行数据验证。可以使用 Pydantic 的架构和验证功能定义数据模型。这可确保传入数据自动验证、序列化和反序列化,从而降低在应用程序中处理无效数据的风险。
- 异步支持:随着Python异步编程的兴起,FastAPI完全拥抱异步操作。可以使用Python的async和await关键字来编写异步端点,使其非常适合处理I/O密集型任务并提高应用程序的整体响应能力。
- 依赖注入: FastAPI 支持依赖注入,允许声明端点的依赖关系。这有助于保持代码模块化、可测试和可维护。我们可以将数据库连接、身份验证等依赖项无缝地注入到的路由中。
- 安全功能: FastAPI 包含各种开箱即用的安全功能,例如对 OAuth2、JWT(JSON Web 令牌)的支持以及请求数据的自动验证,以防止 SQL 注入和跨站点脚本 (XSS) 攻击等常见安全漏洞。
FastAPI 的安装和设置
要开始使用 FastAPI,我们需要安装 Python,如果没有则安装 Python3。然后,我们需要使用以下命令安装快速API
pip install fastapi
还需要安装 uvicorn
pip install uvicorn
创建一个简单的 API
在这里,我们正在创建一个简单的 Web 服务,当您访问特定的网址时,它会说“Hello”。使用 FastAPI,您只需几行代码即可完成此操作,要运行此代码,您可以将其保存在 Python 文件中,这里我们将文件保存为 main.py。
from fastapi import FastAPI
# 创建FastAPI应用程序
app = FastAPI()
# 在根网址("/")定义路由
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI!"}
现在,在终端中执行以下命令:
uvicorn main:app --reload
应用程序运行后,打开网络浏览器并导航至
http://localhost:8000/
如果您使用的是curl 或Postman 等API 测试工具,您应该会在浏览器或响应中看到一条消息。
{"message": "Hello, FastAPI!"}
FastAPI的优势
以下是使用 FastAPI 的简单优点:
- 易于学习和使用: FastAPI 的设计简单明了,特别是对于 Python 开发人员而言。其简单直观的语法以及自动文档生成使其易于入门和维护。
- 高性能: FastAPI 专为提高速度而构建。由于其异步支持和高效的数据处理,它是可用的最快的 Python Web 框架之一。这意味着您的 Web 应用程序可以处理大量请求而不会减慢速度。
- 自动数据验证:借助 FastAPI,您可以使用 Python 类型提示来定义 API 请求和响应所需的数据结构。FastAPI自动验证数据,减少由于错误输入而导致错误的机会。
- 身份验证和授权:它提供了处理身份验证和授权的简单方法,无论是使用 OAuth2、JWT 令牌还是自定义方法。
- 中间件:我们可以轻松地将中间件添加到您的 FastAPI 应用程序中,以执行日志记录、身份验证或请求/响应修改等任务。
FastAPI 的缺点
以下是使用 FastAPI 的一些潜在缺点:
- 学习曲线:虽然 FastAPI 被设计为对开发人员友好,但对于那些刚接触异步编程或一般 Web 框架的人来说,它可能仍然有一个学习曲线。没有 Python 经验的开发人员可能也需要先学习 Python。
- 社区和文档:尽管 FastAPI 的社区正在迅速发展,但它可能没有像其他框架那样广泛的支持网络或文档。您可能会遇到更少的教程、指南和社区贡献的软件包。