首页 >后端开发 >Python教程 >支持 OpenAPI 的顶级 Python API 框架

支持 OpenAPI 的顶级 Python API 框架

Patricia Arquette
Patricia Arquette原创
2024-12-27 22:18:09730浏览

似乎每个月都会推出一个新的 Python Web 框架 - 与前身相比,它具有一组新功能、更好的性能或更清晰的语法。然而,一项经常被忽视的功能是 OpenAPI 支持。我们已经详细讨论了 OpenAPI 的好处 - 包括营销您的 API - 但简而言之,通过 Web 框架生成 OpenAPI 是确保您的 API 文档与您的 API 实现相匹配的最佳方式。似乎较新的框架开始意识到 OpenAPI 的重要性 - 一些框架(例如 Robyn)将 OpenAPI 文档生成添加为测试版的一部分。

在本文中,我们将探索 20 个最流行的 API 框架和库,用于使用 Python 构建 API,它们支持生成 OpenAPI/Swagger 规范,无论是内置的还是通过外部库/扩展。

1. 快速API

Top Python API Frameworks with OpenAPI Support

什么是 FastAPI?

FastAPI 是一个现代的高性能 Web 框架,用于基于标准 Python 类型提示使用 Python 3.6 构建 API。它专为快速开发和高效率而设计。 Zuplo 是 FastAPI 项目的自豪赞助商,旨在帮助推动 Python 中的 API 开发。

FastAPI OpenAPI/Swagger 支持

  • 内置支持:FastAPI 自动生成 OpenAPI(以前 Swagger)代码中的架构。
  • 交互式文档:提供 Swagger UI 和 ReDoc 接口开箱即用,可通过 /docs 和 /redoc 端点访问。

FastAPI 的优点和缺点

优点

  • 高性能:可与 NodeJS 和 Go 相媲美,这要归功于它使用 异步编程。
  • 自动文档:生成 OpenAPI 架构和交互式文档 自动。
  • 易于使用:开发人员友好,语法简洁。
  • 验证:使用 Pydantic 根据类型提示进行数据验证。
  • 异步支持:基于Starlette构建,支持异步编程。

缺点

  • 学习曲线:需要了解 Python 类型提示和异步 编程。
  • 相对较新:比一些旧框架不太成熟,尽管它有 不断壮大的社区。

2.Django REST框架(DRF)

什么是 Django REST 框架?

Django REST Framework 是一个强大而灵活的工具包,用于使用流行的高级 Python Web 框架 Django 构建 Web API。 Zuplo 自豪地赞助 DRF 项目,以继续改进 Django API 开发生态系统。

Django Rest Framework OpenAPI/Swagger 支持

  • 第三方软件包:通过以下软件包支持 OpenAPI drf-yasg (OpenAPI 2.x / Swagger) 和 drf-spectaulous (OpenAPI 3.x)。

Django REST 框架的优点和缺点

优点

  • 与 Django 集成:利用 Django 强大的功能,如 ORM、 身份验证。
  • 全面:丰富的序列化、身份验证、 权限。
  • 社区支持:大型生态系统和社区。

缺点

  • 复杂性:对于简单的 API 来说可能有点过分了。
  • 性能:由于抽象层,可能会变慢。

3.烧瓶

什么是烧瓶?

Flask 是一个用 Python 编写的微型 Web 框架。它以其简单性和可扩展性而闻名。

Flask OpenAPI/Swagger 支持

  • 需要扩展:使用如下扩展 APIFairy 或 Flask-Smorest 用于 OpenAPI 支持。
  • 自动文档:这些扩展可以生成 Swagger UI 并 OpenAPI 规范。

Flask 的优点和缺点

优点

  • 轻量级:极简核心,轻松上手。
  • 灵活:具有大量插件,可高度扩展。
  • 庞大的社区:丰富的资源和支持。

缺点

  • 手动设置:需要额外设置才能实现 OpenAPI 支持等功能。
  • 扩展不一致:质量和维护状态各不相同 扩展。

4. 连接

什么是连接?

Connexion 是一个基于 OpenAPI 规范自动处理 HTTP 请求的框架,构建于 Flask 之上。

Connexion OpenAPI/Swagger 支持

  • 一流的 OpenAPI 集成:使用您的 OpenAPI 规范来路由请求 并验证输入。
  • 自动文档:根据您的 OpenAPI 文件提供 Swagger UI。

连接的优点和缺点

优点

  • API-First Development:鼓励先设计 API 合约 实施。
  • 输入验证:自动验证针对 OpenAPI 的请求 架构。
  • 更少的样板文件:减少代码重复。

缺点

  • 刚性结构:需要保持 OpenAPI 规范与代码同步。
  • 复杂性:对于那些不熟悉的人来说可能具有挑战性 API 优先/规范优先的方法。

5. 夏娃

夏娃是什么?

Eve 是一个开箱即用的 REST API 框架,由 Flask、MongoDB 和 Redis 提供支持。

Eve OpenAPI/Swagger 支持

  • 需要扩展:用途 eve-swagger 生成 Swagger/OpenAPI 文档。

夏娃的优点和缺点

优点

  • 快速设置:以最少的配置快速进行 API 开发。
  • 数据处理:内置对 MongoDB 数据验证的支持。
  • 功能:支持分页、排序、过滤等。

缺点

  • 数据库依赖:主要为 MongoDB 设计。
  • 灵活性:如果您需要偏离其约定,则灵活性较差。

6. 萨尼奇

Top Python API Frameworks with OpenAPI Support

什么是三尼克

Sanic 是一个 Python 3.7 Web 服务器和 Web 框架,编写速度很快。它允许异步请求处理。 Zuplo 是 Sanic 的赞助商,致力于帮助突破 Python API 性能的极限。

Sanic OpenAPI/Swagger 支持

  • 内置支持:Sanic Extensions 提供开箱即用的支持 使用 v3.0 OpenAPI 规范自动生成 API 文档。

Sanic 的优点和缺点

优点

  • 高性能:异步功能使其非常快。
  • 异步/等待语法:现代 Python 异步支持。

缺点

  • 较小的生态系统:与 更大的框架。
  • 不太成熟:不像某些替代方案那样经过实战考验。

7. 猎鹰

什么是猎鹰?

Falcon 是一个极简的 WSGI 库,用于构建快速的 Web API 和应用程序后端。

Falcon OpenAPI/Swagger 支持

  • 需要扩展:类似的库 falcon-openapi 或 falcon-apispec 启用 OpenAPI 支持。值得注意的是,这些扩展已经更新很多年了。
  • 手动集成:可能需要更多实际设置才能集成 OpenAPI。

猎鹰的优点和缺点

优点

  • 性能:高度优化速度。
  • 轻量级:简约设计,依赖性极少。

缺点

  • 开箱即用功能较少:需要额外的工作来实现诸如 身份验证。
  • 较小的社区:更少的资源和扩展。

8.拥抱

什么是拥抱

Hug 是一个 Python 3 框架,可让您开发尽可能简单但又不简单的 API。

拥抱 OpenAPI/Swagger 支持

  • 内置支持:自动生成文档和OpenAPI 来自代码注释的模式。不幸的是,这不是 OpenAPI 或 Swagger 格式,因此您需要自己对其进行转换。我创建了一个简单的脚本来帮助您入门。

拥抱的优点和缺点

优点

  • 简单性:最少的设置和干净的语法。
  • 多个接口:可以通过 HTTP、CLI 或本地函数公开 API。

缺点

  • 社区规模:用户群较小,可能会影响支持。
  • 开发活动:与更流行的相比,更新频率较低 框架。

9. 瓶子

什么是瓶子?

Bottle 是一个快速、简单且轻量级的 Python WSGI 微型 Web 框架。

Bottle OpenAPI/Swagger 支持

  • 需要扩展:使用 Bottle-swagger 或 Bottle-openapi-3。
  • 手动配置:可能需要手动步骤来记录 API。

瓶子的优点和缺点

优点

  • 无依赖项:没有外部依赖项的单文件模块。
  • 轻量级:小型应用程序和原型设计的理想选择。

缺点

  • 有限功能:极简设计;缺乏高级功能 盒子。
  • 较小的生态系统:更少的插件和扩展。

10.金字塔

Top Python API Frameworks with OpenAPI Support

什么是金字塔?

Pyramid 是一个小型、快速、实用的 Python Web 框架。它旨在使创建 Web 应用程序变得更容易。

Pyramid OpenAPI/Swagger 支持

  • 扩展 必填:pyramid_openapi3是最新的扩展,其他则使用Yelp的pyramid_swagger。如果您使用 cornice 在 Pyramid 之上构建 API,则可以使用 cornice-swagger 扩展来添加 OpenAPI 支持。

金字塔的优点和缺点

优点

  • 灵活性:适用于小型和大型应用。
  • 安全性:高度重视安全实践。

缺点

  • 复杂性:学习曲线更陡。
  • 流行度:与 Django 或 Flask 相比不太主流。

11. 熔岩(已弃用)

什么是熔岩?

Molten 是一个最小、快速且可扩展的框架,用于在 Python 中构建 HTTP API。该项目已于 2024 年 4 月被弃用。

Molten OpenAPI/Swagger 支持

  • 内置支持: 根据路由定义自动生成 OpenAPI 文档。
  • 类型注释:使用类型提示进行路由和验证。

熔岩的优点和缺点

优点

  • 性能:针对速度进行了优化。
  • 现代功能:支持依赖注入和类型注释。

缺点

  • 采用有限:社区较小,资源较少。
  • 不太成熟:没有广泛使用或测试。

12.黑羊

什么是黑羊?

BlackSheep 是一个异步 Web 框架,用于使用 Python 构建基于事件的 Web 应用程序。

BlackSheep OpenAPI/Swagger 支持

  • 内置支持:BlackSheep 实现了大多数常见场景的OpenAPI文档的自动生成,并提供了丰富文档细节的方法。

BlackSheep 的优点和缺点

优点

  • 异步支持:专为现代异步Python而设计。
  • 性能:高性能路由和处理。

缺点

  • 社区规模:较小的用户群。
  • 文档:不太全面的文档。

13.夸脱

什么是夸脱?

Quart 是一个基于 Flask 的 ASGI Web 框架,旨在提供 Flask 的易用性以及异步支持的额外优势。

Quart OpenAPI/Swagger 支持

  • 需要扩展:与 Flask 类似,依赖于 OpenAPI 的扩展 支持。 quart-schema 是一个较新的扩展,另一个是较旧的 quart-openapi。
  • 兼容性:可以直接使用很多Flask扩展。

夸脱的优点和缺点

优点

  • 异步支持:完全支持异步和等待。
  • 熟悉:与 Flask 类似的 API。

缺点

  • 扩展兼容性:并非所有 Flask 扩展都兼容。
  • 较小的生态系统:更少的夸脱特定资源。

14. 响应者

什么是响应者?

Responder 是一个 Python Web 框架,旨在将 Flask、Falcon 和其他框架的优点集于一身。

响应者 OpenAPI/Swagger 支持

  • 内置支持: 自动生成OpenAPI文档。
  • 交互式文档:提供 Swagger UI。

响应器的优点和缺点

优点

  • 简单:易于学习和使用。
  • 自动文档:减少维护 API 文档的开销。

缺点

  • 维护状态:截至 2023 年,维护不太积极。
  • 社区规模:用户群较小,资源较少。

15.龙卷风

什么是龙卷风?

Tornado 是一个 Python Web 框架和异步网络库。

Tornado OpenAPI/Swagger 支持

  • 需要扩展:使用 龙卷风招摇或类似的库。
  • 手动设置:可能需要额外的努力来集成。

龙卷风的优点和缺点

优点

  • 可扩展性:适合需要长期连接的应用程序。
  • 异步:内置异步功能。

缺点

  • 不那么传统:与标准 WSGI 框架不同。
  • 复杂性:使用起来可能更复杂。

16.罗宾

Top Python API Frameworks with OpenAPI Support

什么是罗宾

Robyn 是一个高性能、异步 Python Web 框架,专注于速度和效率。它通过 PyO3 利用 Rust 的 Tokio 运行时来实现令人印象深刻的性能指标。 Robyn 的目标是成为可用的最快的 Python Web 框架之一。

OpenAPI/Swagger 支持

  • 内置支持:Robyn 有 内置 OpenAPI 支持,规范位于 /openapi.json ,文档 UI 位于 /docs。

罗宾的优点和缺点

优点

  • 高性能:利用 Rust 的异步运行时提供了显着的性能 速度优势。
  • 异步:使用现代Python的async和await语法构建 发展。
  • 简约:轻量级框架,避免不必要的开销。

缺点

  • 成熟度:相对较新,可能缺乏功能和稳定性 与更成熟的框架相比。
  • 社区支持:较小的社区意味着较少的资源、插件和资源 第三方扩展。
  • 文档:由于较新,文档可能不太全面 状态。

17. 独角兽

什么是Uvicorn?

Uvicorn 是一个闪电般快速的 ASGI 服务器实现,使用 uvloop 和 httptools。它旨在运行异步 Python Web 应用程序,特别是那些使用 FastAPI、Starlette 等框架构建的应用程序。

Uvicorn OpenAPI/Swagger 支持

  • 不是框架:Uvicorn 是一个 ASGI 服务器,而不是一个 Web 框架。它 不提供路由、中间件或 OpenAPI 支持等功能。
  • 与框架一起使用:与 FastAPI 或等框架一起使用时 Starlette、Uvicorn 为应用程序提供服务,框架处理 OpenAPI/Swagger 支持。

Uvicorn 的优点和缺点

优点

  • 高性能:由于使用了 uvloop 和 httptools。
  • 符合标准:实施 ASGI 规范,确保 与各种框架的兼容性。
  • 轻量级:开销最小且易于部署。

缺点

  • 不是完整的框架:不包含 Web 框架功能;你需要 与 ASGI 兼容框架结合使用。

18. 斯塔莱特

什么是星光?

Starlette 是一个轻量级的 ASGI 框架/工具包,非常适合在 Python 中构建高性能异步服务。它提供了构建 Web 应用程序所需的基本组件,包括路由、中间件、会话等。

Starlette OpenAPI/Swagger 支持

  • 内置支持:Starlette 支持通过 app.routes 检查应用程序上的路由来生成 API 模式,并使用端点上的文档字符串或其他属性来确定完整的 API 模式。

Starlette 的优点和缺点

优点

  • 高性能:专为速度和效率而设计,适合构建 高性能 API。
  • 异步:完全支持异步和等待,利用现代Python 特点。
  • 模块化设计:允许开发者根据需要挑选组件。

缺点

  • 极简主义:缺乏一些开箱即用的高级功能,例如 自动 OpenAPI 文档。
  • 学习曲线:对于异步编程新手或新手来说可能具有挑战性 谁更喜欢包含电池的框架。

19. 莱特星

Top Python API Frameworks with OpenAPI Support

什么是莱特星?

Litestar(以前称为Starlite)是受Starlette和FastAPI启发而新开发的ASGI框架,旨在提供性能和易用性之间的平衡。

Litestar OpenAPI/Swagger 支持

  • 内置支持:Litestar 有 内置 OpenAPI 模式生成和自动文档。
  • 交互式文档:提供开箱即用的 Swagger UI 和 ReDoc。

莱特星的优点和缺点

优点

  • 性能:旨在快速高效。
  • 易于使用:通过合理的默认设置简化 API 开发。
  • 现代功能:支持异步/等待、类型注释和依赖 注射。

缺点

  • 新奇:作为一个较新的框架,它可能得到的社区支持较少,并且 资源。
  • 不断发展的 API:频繁更新可能会导致重大更改。

20. API 之星(已弃用)

什么是 API 之星?

APIStar 是一个用于构建具有 OpenAPI 支持的 Web API 的框架。该项目于 2022 年 2 月被弃用。

API 之星 OpenAPI/Swagger 支持

  • 内置支持: 直接在代码中使用 OpenAPI 模式。

API Star 的优点和缺点

优点

  • 强类型:强调类型注释。

缺点

  • 已弃用:不再维护;不推荐用于新项目。

如何选择 Python API 框架?

选择支持 OpenAPI/Swagger 的框架时,请考虑以下因素:

  • 项目要求:项目的规模和复杂性。可能是 很难找到利基框架的开发人员,也很难对现有的队友进行新范例/概念的培训。
  • 社区和支持:具有较大社区的框架往往具有 更多资源。
  • 性能需求:如果高性能至关重要,请考虑异步 FastAPI 或 Sanic 等框架。
  • 开发风格:您喜欢代码优先还是 API 优先/规范优先 发展。

最好的 Python API 框架是什么?

FastAPI 因其内置 OpenAPI 支持、高性能、繁荣的社区和现代功能而脱颖而出。如果您已经在使用 Django 并且需要一个强大的、功能丰富的 API 框架,Django REST Framework 是理想的选择。 Flask 提供灵活性和简单性,但需要扩展 OpenAPI 支持 - 因此我们不推荐将其用于较新的项目..

最快的 Python API 框架是什么?

截至 2024 年 11 月,Robyn 声称是最快的框架:

Top Python API Frameworks with OpenAPI Support

Python API 要点 - 不要忘记这些!

无论您选择哪种 Python API 框架,在投入生产之前,您都需要具备 API 的 3 个支柱:

  1. 身份验证(例如 API 密钥身份验证)
  2. 文档(例如包含 API 参考、身份验证的开发人员文档门户, 计费、分析、代码示例等)
  3. 保护(例如速率限制和配额)

Zuplo 可以为您处理所有这些事情 - 免费!您可以免费开始,也可以抓紧时间与我们的团队一起观看 Zuplo 的实际应用。

常见问题解答

什么是 WSGI?

WSGI 代表 Web 服务器网关接口。它是定义 Web 服务器和 Python Web 应用程序或框架之间的标准接口的规范。 WSGI 允许开发人员编写可在任何符合 WSGI 的 Web 服务器上运行的可移植 Web 应用程序,从而提高 Python Web 生态系统的互操作性和灵活性。

什么是 ASGI?

ASGI 代表异步服务器网关接口。它是定义异步 Python Web 服务器、框架和应用程序之间的标准接口的规范。 ASGI 是作为 WSGI(Web 服务器网关接口)的继承者而开发的,用于支持 HTTP 之外的异步、事件驱动的应用程序和协议,例如 WebSockets。

WSGI 和 ASGI 有什么区别

|特色 | WSGI | ASGI | | --------------- | -------------------------------------------------- | -------------------------------------------------- ------ | |并发 |同步(一次一个请求)|异步(同时处理多个连接)| |协议|仅 HTTP/1.1 | HTTP/1.1、HTTP/2、WebSocket 等 | |使用案例 |传统Web应用|实时应用程序、长期连接、异步服务 | | Python 版本 |与旧版 Python 兼容 |需要 Python 3.5 才能实现异步功能 |

我应该在哪里托管我的 Python API?

托管 Python API 的选项有很多,包括

  • 平台即服务 (PaaS) 提供商,例如 PythonAnywhere 或 Render
  • 基础设施即服务 (IaaS) 又名大型云,例如 AWS EC2、Azure VM、GCP 计算引擎
  • 虚拟专用服务器 (VPS),例如 DigitalOCean 或 Linode
  • 使用 Google Kubernetes Engine 的容器 (Docker Kubernetes)
  • 无服务器平台,例如 AWS Lambda 或 Google Cloud Functions

Python API 的最佳 API 网关是什么?

Zuplo 的边缘 API 网关提供卓越的缓存性能、使用 git 的直观开发人员体验以及完整的 OpenAPI 支持。这使得它成为大多数 Python API 框架的自然选择,尤其是那些支持 OpenAPI 的框架。

记录 Python API 的最佳方法是什么?

许多 Python 框架(例如 FastAPI、Litestar)都内置了对 OpenAPI 的支持,大多数 API 文档平台(例如 Zudoku)都支持开箱即用。如需完整的 API 文档体验,请考虑 Zuplo 的开发者门户 - 该门户具有文档、内置身份验证、自助计费和使用情况分析功能。

通过 Python API 获利的最佳方式是什么?

最快、最实惠的货币化方式是使用 Zuplo 的 API 货币化功能 - 它直接与 Stripe 等支付平台集成。您可以轻松创建计划、允许用户注册、颁发 API 密钥、控制订阅和强制执行配额。

以上是支持 OpenAPI 的顶级 Python API 框架的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn