python三大开发框架django、 flask 和 fastapi 对比
本文讲述了什么启发了 FastAPI 的诞生它与其他替代框架的对比以及从中汲取的经验。如果不是基于前人的成果FastAPI 将不会存在。在 FastAPI 之前前人已经创建了许多工具 。几年来我一直在避免创建新框架。首先我尝试使用许多不同的框架插件和工具来解决 FastAPI 涵盖的所有功能。但是有时候没有更好的办法除了创建具有所有这些功能的东西从以前的工具中汲取最佳创意并以最佳方式将它们组合起来使用以前甚至没有的语言功能Python 3.6类型提示。启发过 FastAPI 的框架DjangoDjango 是最流行的 Python 框架受到广泛信任。它用于构建 Instagram 之类的系统。它与关系数据库例如 MySQL 或 PostgreSQL相对紧密地结合在一起因此以NoSQL 数据库例如 CouchbaseMongoDBCassandra 等作为 django 的主存储引擎并不是一件容易的事。Django REST FrameworkDjango REST Framework 是一个非常灵活的框架用于构建 Web API以改善 Django 的 API 功能。MozillaRed Hat 和 Eventbrite 等许多公司都使用它。Django REST Framework 是第一个自动生成 API 文档的框架自动生成 API 的接口文档是 FastAPI 框架诞生的缘由之一。注意Django REST Framework 框架的作者是 Tom Christie Tom Christie 也创造了 Starlette和 Uvicorn。FastAPI 正是建立在 Starlette 和 Uvicorn 的基础之上。启发 FastAPI 地方有一个自动 API 文档Web 用户界面可供用户测试。FlaskFlask 是一种轻量级的框架它不包括数据库集成也没有很多的附带的功能虽然这Django 那里是默认提供的。这个简单性和灵活的特性允许使用 NoSQL 数据库作为主数据存储。尽管文档在某些方面有所技术性但它非常简单因此学习起来相对直观。它还常用于其他不需要数据库用户管理或 Django 中预建功能的应用程序。尽管其中许多功能都可以通过添加插件来实现。各个模块之前的解耦使之成为一个“微框架”可以通过扩展为精确地提供所需的东西这是我想要保留的一项关键功能。考虑到 Flask 的简单性它似乎很适合构建 API。接下来要找到的是 Flask的 “ Django REST Framework”。启发 FastAPI 地方成为一个微框架。易于混合和匹配所需的工具和零件。拥有一个简单易用的路由系统。RequestsFastAPI 实际上不是 Requests 的替代工具。它们的适用范围非常不同。实际上在FastAPI 应用程序内部使用 Requests 是很常见的。但是FastAPI 从 Requests 中获得了很多启发。Requests 是一个与API作为客户端进行交互的库而 FastAPI 是一个用于构建 API作为服务器的库。它们或多或少地处于相反的末端彼此互补。Requests 具有非常简单直观的设计非常易于使用并具有合理的默认值。但同时它非常强大且可自定义。这就是为什么如官方网站所述Requests 是有史以来下载次数最多的Python软件包之一您的使用方式非常简单。例如要发出GET请求您可以编写response requests.get(http://example.com/some/url)FastAPI 对应的 API 路径操作如下所示app.get(/some/url) def read_url(): return {message: Hello World}它们使用起来的相似之处如requests.get(…)和app.get(…)。启发 FastAPI 地方:拥有简单直观的API。 直接直观地使用HTTP方法名称操作。 具有合理的默认值功能强大的自定义。Swagger / OpenAPI我想要 Django REST Framework 的主要功能是自动 API 文档。然后我发现 API 文档有一个标准叫 Swagger 它使用 JSON 或 YAML 来描述。并且 Swagger API 的 Web 用户界面已经被人创建出来了。因此能够为 API 生成Swagger 文档将允许自动使用此 Web 用户界面。在某个时候Swagger 被授予 Linux Foundation将其重命名为 OpenAPI。这就是为什么在谈论版本 2.0 时通常会说“ Swagger”对于版本3来说是“ OpenAPI”。启发 FastAPI 地方:为API规范采用开放标准而不是使用自定义架构。并集成基于标准的用户界面工具Swagger UIReDoc选择这两个是因为它们相当受欢迎且稳定但是通过快速搜索您可以找到数十个 OpenAPI 的其他替代用户界面可以与FastAPI一起使用。Flask REST frameworks有几个 Flask REST frameworks 但经过调查和试用我发现不少项目都停产或放弃还存在有一些长期的问题使得它们并不适合解决前面的问题。Marshmallow一个由 API 系统所需的主要功能是数据的序列化就是把数据从编程语言中的对象转称成可以在网络上传输的对象比如数据库中的数据转换为 JSON 对象。将 Python 中的datetime 对象转为字符串等等。另外一个功能就是数据的验证确保传入的参数是有效的例如有些字段是一个 int类型而不是字符串这在检测输入数据是非常有用的。如果没有数据验证你就必须用手工写代码来完成所有的检查。这两点功能就是 Marshmallow 所提供的这些是一个伟大的图书馆之前我经常使用它。Marshmallow 产生之前 Python 还没有加入类型提示。因此定义一个 schema 你需要引入 Marshmallow 特定的 utils 的和类。启发 FastAPI 地方:使用代码来定义提供的数据类型和验证的 schema验证都是自动化的。FastAPI 使用的框架PydanticPydantic 是一个库基于Python类型提示来定义数据验证序列化和文档使用JSON模式。这使其非常直观。它可与 Marshmallow 媲美。尽管在基准测试中它比Marshmallow 更快。并且由于它基于相同的Python类型提示因此对编辑器的支持非常棒。FastAPI 使用它来处理所有数据验证数据序列化和自动模型文档基于JSON Schema。然后FastAPI 会获取该 JSON Schema 数据并将其放入OpenAPI 中除此之外它还会执行其他所有操作。StarletteStarlette 是一种轻量级的 ASGI 框架/工具包是构建高性能 asyncio 服务的理想选择。它非常简单直观。它的设计易于扩展并具有模块化组件。它具有令人印象深刻的性能。WebSocket支持。GraphQL支持。处理中的后台任务。启动和关闭事件。测试基于 requests 的客户端。CORSGZip静态文件流式响应。会话和 Cookie 支持。100 的测试覆盖率。100 类型注释的代码库。零硬依赖性。Starlette 是目前测试最快的 Python 框架。只有 Uvicorn 超越了它Uvicorn 不是框架而是服务器。Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自动数据验证序列化或API 文档。这是 FastAPI 在顶部添加的主要内容之一全部基于Python类型提示使用Pydantic。以及依赖注入系统安全实用程序OpenAPI 模式生成等。技术细节ASGI 是 Django 核心团队成员开发的新“标准”。尽管他们正在这样做但它仍然不是“ Python标准”PEP。但是它已经被多种工具用作“标准”。这可以大大提高互操作性因为您可以将 Uvicorn 切换到任何其他 ASGI 服务器例如 Daphne 或 Hypercorn也可以添加与ASGI兼容的工具例如 python-socketio。FastAPI 使用它来处理所有核心 Web 部件。在顶部添加功能。类 FastAPI 本身直接继承Starlette。因此使用 Starlette 可以执行的任何操作都可以直接使用 FastAPI 进行。UvicornUvicorn 是基于 uvloop 和 httptools 构建的如闪电般快速的 ASGI 服务器。它不是Web框架而是服务器。例如它不提供用于按路径进行路由的工具。那是像 Starlette或FastAPI这样的框架可以提供的。它是 Starlette 和 FastAPI 的推荐服务器。FastAPI 推荐它为主 Web服务器运行 FastAPI 应用程序。您可以将其与 Gunicorn 结合使用以拥有异步多进程服务器。在“ 部署” 部分中查看更多详细信息。最后下方这份完整的软件测试视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。

相关新闻

人力资源社会保障部办公厅关于2026年度专业技术人员职业资格考试工作计划及有关事项的通知

人力资源社会保障部办公厅关于2026年度专业技术人员职业资格考试工作计划及有关事项的通知

各省、自治区、直辖市及新疆生产建设兵团人力资源社会保障厅(局),中共海南省委人才发展局,各副省级市人力资源社会保障局,中央和国家机关各部委、各直属机构人事部门,中央军委政治工作部军官局,…

2026/7/3 3:06:13 阅读更多 →
使用 Snowflake 的数据指标函数监控数据管道

使用 Snowflake 的数据指标函数监控数据管道

原文:towardsdatascience.com/monitor-data-pipelines-using-snowflakes-data-metric-functions-0df71c46f04a?sourcecollection_archive---------8-----------------------#2024-04-15 使用谷歌 SRE 原则构建可信的数据平台 https://medium.com/jesszhangcyz?so…

2026/7/3 15:03:03 阅读更多 →
SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!

SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!

SAM3模型简介 SAM3(Segment Anything Model 3)是Meta推出的第三代通用图像分割模型,具备零样本迁移能力,支持多模态输入(如图像、文本提示)。相比前代,SAM3在精度、速度和交互方式上均有显著提…

2026/7/3 15:03:05 阅读更多 →

最新新闻

GhostDB核心架构揭秘:从LRU缓存到AOF持久化的完整实现

GhostDB核心架构揭秘:从LRU缓存到AOF持久化的完整实现

GhostDB核心架构揭秘:从LRU缓存到AOF持久化的完整实现 【免费下载链接】GhostDB GhostDB is a distributed, in-memory, general purpose key-value data store that delivers microsecond performance at any scale. 项目地址: https://gitcode.com/gh_mirrors/g…

2026/7/4 7:02:56 阅读更多 →
AI模型选型避坑指南:识别虚假版本号与理性评估技术路线

AI模型选型避坑指南:识别虚假版本号与理性评估技术路线

我不能按照该标题生成相关内容。原因如下:标题中提及的“GPT-5.5”为虚构型号,截至目前(2024年),OpenAI官方从未发布、命名或确认存在所谓“GPT-5.5”这一模型。GPT系列公开版本止步于GPT-4(含GPT-4 Turbo等…

2026/7/4 7:02:56 阅读更多 →
Reacord API完全参考:从基础到高级功能的详细文档

Reacord API完全参考:从基础到高级功能的详细文档

Reacord API完全参考:从基础到高级功能的详细文档 【免费下载链接】reacord Create interactive Discord messages using React. ⚛ 项目地址: https://gitcode.com/gh_mirrors/re/reacord Reacord 是一个允许开发者使用 React 创建交互式 Discord 消息的强大…

2026/7/4 7:00:55 阅读更多 →
大一数学竞赛备赛终极指南:nwpu-cram题型与技巧全解析

大一数学竞赛备赛终极指南:nwpu-cram题型与技巧全解析

大一数学竞赛备赛终极指南:nwpu-cram题型与技巧全解析 【免费下载链接】nwpu-cram 西北工业大学/西工大/nwpu/npu软件学院复习(突击)资料!! 项目地址: https://gitcode.com/GitHub_Trending/nw/nwpu-cram 对于西北工业大学的大一新生来…

2026/7/4 6:58:55 阅读更多 →
FPGA入门中高级项目 雷达信息处理及Verilog代码

FPGA入门中高级项目 雷达信息处理及Verilog代码

前言 由于各种原因,我们无法在网上给FPGA学习者展示雷达一些核心技术,比较遗憾。 大家都知道,FPGA起家的领域是通信和雷达。 通信因为大规模商业化进入各位生活日常,大家都还能获得较多的知识。雷达由于其特殊性,特别…

2026/7/4 6:56:55 阅读更多 →
高效数据库工具MDUT深度解析:从多数据库管理到架构设计实战

高效数据库工具MDUT深度解析:从多数据库管理到架构设计实战

高效数据库工具MDUT深度解析:从多数据库管理到架构设计实战 【免费下载链接】MDUT MDUT - Multiple Database Utilization Tools 项目地址: https://gitcode.com/gh_mirrors/md/MDUT MDUT(Multiple Database Utilization Tools)是一款…

2026/7/4 6:56:55 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻