所有文章 > API术语解释 > 5分钟内解释FastAPI
5分钟内解释FastAPI

5分钟内解释FastAPI

FastAPI,一个允许你开发web apiPython框架,在过去几年里一直很流行。

API(应用程序编程接口)是现代体系结构的基础。它们允许应用程序模块化和解耦。幂简集成提供了很多通用和免费的API服务,这允许您快速创建应用程序,并使其易于维护。

因此,如果你打算使用Python开发web应用程序,学习FastAPI是一个不错的选择。本文将教你所有关于FastAPI的基础知识。

一、什么是FastAPI

FastAPI是一个基于python的web框架。近年来,它引起了很多关注。它的开发结构类似于Flask,对于那些想学习Python web开发的人来说,Flask是最受欢迎的选择。FastAPI使用简单,它的文档清晰易懂。微软、Netflix和Uber等科技巨头都在使用FastAPI。

FastAPI具有您期望从API构建器中获得的所有特性,但它并不局限于这些。您可以使用它来挂载向后WSGI,这是大多数用户不知道的。顾名思义,FastAPI的主要目的是构建API端点。这可以像在JSON中返回Python字典数据或使用OpenAPI的交互式Swagger UI一样有效地完成。

FastAPI并不局限于API。它几乎可以用于web框架所做的一切,从使用Jinja2模板引擎交付web页面到提供基于websockets的应用程序。

1.1.FastAPI的优点:

  • FastAPI允许您验证开发人员的数据类型,即使在使用嵌套JSON查询时也是如此。
  • 它提供了自动完成功能,允许您在更短的时间内创建应用程序,并且花费更少的精力。
  • 它与OpenAPI和JSON Schema词汇表兼容,允许您验证和注释JSON文档。
  • FastAPI允许您使用名为graphene-python的Python库快速构建GraphQL API
  • FastAPI与OAuth 2.0以及外部提供商兼容。

1.2.FastAPI的缺点:

  • FastAPI仍然是一个新框架,因此很少有指导社区。它没有足够的外部教育信息,如书籍、课程或教程。
  • 因为我们必须将FastAPI中的所有组件绑定在一起,所以主文件可能会变得非常大或拥挤。

1.3.FastAPI 最佳实践方式有哪些

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,它基于 Python 3.6 及以上版本。以下是一些遵循 fastapi 最佳实践的方式:

  1. 遵循 RESTful 原则
    在设计 API 时,遵循 REST 架构风格的原则是 fastapi 最佳实践之一。这包括使用资源名称、HTTP 方法和状态代码来表达 API 的功能和响应。
  2. 使用 Pydantic 进行数据验证
    利用 Pydantic 进行请求和响应数据的验证是 fastapi 最佳实践中的关键步骤,确保接收到的数据符合预期的格式和类型。
  3. 依赖注入
    使用依赖注入来处理请求前和请求后的逻辑,如身份验证、数据库会话管理等,是 fastapi 最佳实践的一部分。
  4. 路径操作函数
    为每个路由定义明确的路径操作函数,保持代码的清晰和模块化,这是 fastapi 最佳实践的推荐方法。
  5. 文档生成
    利用 FastAPI 自动生成的文档(Swagger UI 和 ReDoc),确保 API 文档的实时更新和易用性,这是 fastapi 最佳实践的重要组成部分。
  6. 中间件和异常处理
    使用中间件处理跨请求逻辑,如日志记录、请求限流等,以及统一的异常处理来提高代码的健壮性,这些都是 fastapi 最佳实践。
  7. 安全性
    实现安全措施,如使用 HTTPS、身份验证(JWT、OAuth2)、跨源资源共享(CORS)等,是 fastapi 最佳实践中的关键考虑因素。
  8. 异步支持
    利用 Python 的异步功能来提高性能,特别是在处理 I/O 密集型任务时,这是 fastapi 最佳实践的核心优势之一。
  9. 环境变量管理
    使用环境变量来管理配置,而不是将敏感信息硬编码在代码中,这是 fastapi 最佳实践中的一个重要方面。
  10. 代码格式化和 linting
    使用黑(Black)和 flake8(或其他 linting 工具)来保持代码风格的一致性和代码质量,这是遵循 fastapi 最佳实践的推荐做法。
  11. 单元测试和集成测试
    编写单元测试和集成测试来验证代码的正确性和稳定性,是 fastapi 最佳实践的一部分。
  12. 日志记录
    使用日志记录来跟踪 API 的使用情况和潜在的错误,这是 fastapi 最佳实践中的一个关键环节。
  13. 数据库交互
    如果使用数据库,确保使用异步数据库客户端,并在请求结束后关闭数据库连接,这是 fastapi 最佳实践中的一个重要步骤。
  14. CORS 配置
    正确配置 CORS,以便前端应用可以从不同的源访问你的 API,这是 fastapi 最佳实践的一部分。
  15. 响应模型
    定义清晰的响应模型,以便客户端知道期望的响应结构,这是 fastapi 最佳实践的推荐方法。
  16. 状态码和异常
    使用适当的 HTTP 状态码和异常处理来传达操作的结果,这是 fastapi 最佳实践中的一个重要方面。
  17. 限流和缓存
    实现请求限流和缓存策略,以提高 API 的性能和可扩展性,这是 fastapi 最佳实践中的一个关键策略。
  18. 版本控制
    在 API 的路径或媒体类型中包含版本号,以便于未来的版本管理,这是 fastapi 最佳实践中的一个重要考虑因素。
  19. 使用 OpenAPI/AsyncAPI 规范
    遵循 OpenAPI/AsyncAPI 规范来定义 API,这有助于自动化文档生成和客户端代码生成,是 fastapi 最佳实践的一部分。

这些 fastapi 最佳实践可以帮助你构建高效、可维护和安全的 API。

二、FastAPI的独特功能

这些独特的特性使FastAPI成为迄今为止最流行的Python web框架。

  • 高性能:FastAPI比其他python框架性能更高。FastAPI的速度导向框架使其成为首选。通过利用Starlette的特性、创建api和生成现成的代码,一切都归结为更快的速度和更好的性能。
  • 快速编写代码:开发人员不必使用生产就绪代码创建任何新内容。这将使这个过程加快了大约200%到30%。FastAPI运行在Starlette上,并且有更多的特性可以用来构建用于数据验证和序列化的API。
  • 该框架已经具备了所有必要的组件,从而减少了编码所需的时间。
  • 最小化bug:框架有一个自动完成功能,可以自动将大部分代码插入到代码块中。这样可以最大限度地减少错误的可能性并提高输出质量。
  • 易于理解:除了现代Python, FastAPI不做任何事情。它是Python 3.6的修改版本,没有包含新的语法。任何了解该语言的人都可以使用该框架。
  • 最小的工作量:FastAPI自动生成OpenAPI文档,开发人员只需最小的工作量。这些信息可以在应用程序的/doc目录下找到。
  • 文档包含有关API端点、返回代码、响应参数和其他细节的详细信息。
  • 编辑器支持:框架的所有组件都在设计时考虑了自动完成功能。它很简单,使开发人员能够生成现成的代码。您还可以使用交互式文档直接在浏览器中测试代码。
  • 开放标准:FastAPI的Python web框架是一个巨大的优势。该框架与OpenAPI(以前称为Swagger)兼容,OpenAPI允许创建API。

三、FastAPI的安装

3.1. Linux下的FastAPI安装

使用以下命令在Linux上安装Python 3:

sudo apt install python3

使用下面的命令在Linux上安装pip:

sudo apt install python3-pip

接下来,在Linux上安装FastAPI。

pip install fastapi

您还需要一个ASGI服务器。因此,使用pip安装uvicorn。

pip install "uvicorn[standard]"

3.2. Windows下的FastAPI安装

使用Microsoft store在Windows上安装Python 3。这也将安装pip。

接下来,在Windows上安装FastAPI。

pip install fastapi

最后,安装ASGI服务器uvicorn。

pip install "uvicorn[standard]"

四、FastAPI的新时代用法

以下是一些FastAPI新时代的用法:

4.1. 自动文档

关于API类型和端点的文档是必须的。这个问题可以使用OpenAPI、Swagger UI和ReDoc来解决。这些都是用FastAPI自动打包的。这使您可以集中精力编写代码,而不必设置工具。

4.2. 键入Python

FastAPI使用Python 3.6类型声明(感谢Pydantic)。这意味着它使用了一个Python特性,允许您指定变量的类型和类型。这个框架很好地利用了它,为您提供了出色的编辑器支持。自动补全工作惊人。

4.3. 验证

Pydantic已经将验证集成到这个框架中。可以完成标准Python类型的验证和自定义字段验证。

4.4. 安全与认证

这是任何API的重要组成部分。我们经常只是重复代码,那么为什么不将其中的一些合并到我们的框架中呢?FastAPI就是这样做的。

4.5. 异步特性

默认情况下,FastAPI支持异步端点,使您的代码更简单、更高效。这是相对Flask的一个显著优势。

五、FastAPI 和 Flask的主要区别

5.1. 使用差异

FastAPI是一个全栈平台,它提供了构建API所需的一切。另一方面,Flask是一个微框架,并没有提供与FastAPI相同的所有特性。

如果你需要原型化一个想法或快速创建一个简单的web应用程序,Flask会很有用。

Flask和FastAPI的使用方式非常不同。

Flask框架可以用来创建新想法和应用程序的原型,而FastAPI框架可以用来构建api。您可以使用它快速构建后端服务器,而无需任何编码知识。

5.2. 小型网站和web应用程序

FastAPI使用简单,轻量级,可用于小规模的web和应用程序开发。它包括一个对象关系层(ORM),用于处理应用程序中的数据对象,因此您可以通过编码快速访问它们。
ORM层跟踪您的数据库,并允许您在网站或应用程序中添加、修改或删除新信息时忘记手动更新它们。

5.3. WSGI 对比 ASGI

您可能已经注意到一个基本的区别:Flask使用WSGI作为其标准接口,而FastAPI使用ASGI。如前所述,WSGI以同步方式处理请求。请求按顺序处理。直到最后一项任务完成后才能开始。

ASGI异步处理请求。这使得任务可以按照自己的节奏完成,而不需要等待其他任务。

5.4. 社区

另一个不同之处在于社区。Flask是一个比FastAPI存在时间更长的社区。这意味着大量的文档和来自其他编写Flask的人的外部帮助。

FastAPI仍然是一个新项目,因此社区还没有得到很大的发展。这意味着尽管有足够的文档,但没有太多的外部帮助。

以下是FastAPI与Flask对比的总结表:

FastAPIFlask
数据验证是内置的没有数据验证
支持异步任务不支持异步任务
实现ASGI规范支持WSGI应用程序
自动文档支持手动文档支持
错误信息以JSON格式显示错误信息显示在HTML页面上
较小的社区支持丰富的社区支持

六、FastAPI 和Flask选择哪一个

FastAPI和Flask可以快速设置Python web服务器和数据科学应用程序。两者都需要同样的部署工作,但是哪个框架最适合您的下一个项目呢?
当速度和性能最重要时,FastAPI是最佳选择。如果您正在构建CDN并期望获得大量流量,则此框架是最好的。FastAPI允许您下载框该架并立即使用。
项目模板将节省您的时间,并帮助您节约时间。

在构建api时,FastAPI是比Flask更好的选择。尤其是在考虑到微服务和其他因素的情况下。如果你已经有很多围绕Flask框架构建的工具,那么Flask就是最好的选择。

七、结论

以上就是关于 FastAPI 的全部内容。FastAPI 提供卓越的速度和性能。如果您正在构建内容交付网络并期待流量,那么这个框架就是最好的选择。FastAPI 的创新框架和项目模板将帮助您节省时间。

Flask更适合创建api,尤其是微服务。FastAPI也比Flask好。如果您已经广泛使用Flask,那么它将是一个更好的选择。

您还可以探索一些流行的Python框架来构建API。

原文链接:FastAPI Explained in 5 Minutes or Less

#你可能也喜欢这些API文章!