FastAPI - 一款新型的 Python Web 框架(对比 Flask)

FastAPI 快速学习之 Flask 框架对比 本文主要对 FastAPI 与 Flask 框架进行对比,以助快速学习。进一步了解FastAPI的高级使用方法,可参考FastAPI官方文档。 阅读详情

近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让Flask配合 Flasgger, 所以写了篇Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了FastAPI这么一款集成了 Swagger UI 的更新的 Python Web 框架。起初想要在标题中表达的意思大概是 Flask + Swagger = FastAPI, 后来发现 FastAPI 的闪亮点不仅如此,顺便找了些 Flask 与 FastAPI 对比的文章来,在文后附有链接。

本文不对 Flask 与 FastAPI 的各个方面对进行对比,本人兴趣依然还在 FastAPI 的 Swagger UI 功能,以及与 Flask 的 Blueprint 类似的特性。如果要拿 Flask 与 FastAPI 比较的话,应该用 Flask 2.x, 因为它开始支持类似 @app.get 的装饰器,并引入了 async 路由函数。

Flask 是在 2010 年发布的,它构建于 WSGI(Python Web Server Gateway Interface) 之上的,产品环境中运行需与 uWSGI, Gunicorn 搭配,或用 mod_wsgi 模块与 Apache 集成。因发布较早,所以目前应该有较多的使用者。Flask 2.0 需要 Python 3.6+ 的支持,如果支持 , 需 Python 3.7+async

FastAPI 发布于 2018 年,构建于 ASGI(Asynchronous Server Gateway Interface) 之上,在 IO 密集型的应用中有更优越的性能。生成环境中配合 ASGI 服务器,如Uvicorn或Hypercorn .FastAPI 最为亮丽的特性是集成了 Swagger UI -- 外加一个福利ReDoc 。FastAPI 需 Python 3.6+ 版本。

毕竟是在开始学一个新的框架,还是从它的基本用法开始,途中会穿插与 Flask 的对比。

FastAPI 的基本用法

安装:

<span style="color:#444444"><span style="background-color:#f6f6f6"> $ pip <span style="color:#333333"><strong>install</strong></span> fastapi  $ pip <span style="color:#333333"><strong>install</strong></span> <span style="color:#880000">"uvicorn[standard]"</span> 
</span></span>

当前安装的 fastapi 版本为 0.70.1, uvicorn 版本为 0.16.0。开始第一个例子,摘自官方

创建一个 文件,内容为main.py

<span style="color:#333333"><span style="background-color:#f6f6f6"><span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>from</strong></span> typing <span style="color:#333333"><strong>import</strong></span> Optional
<span style="color:#333333"><strong>from</strong></span> fastapi <span style="color:#333333"><strong>import</strong></span> FastAPI

app = FastAPI()


<span style="color:#1f7199">@app.get("/")</span>
<span style="color:#333333"><strong>def</strong></span> <span style="color:#880000"><strong>read_root</strong></span>():
    <span style="color:#333333"><strong>return</strong></span> {<span style="color:#880000">"Hello"</span>: <span style="color:#880000">"World"</span>}


<span style="color:#1f7199">@app.get("/items/{item_id}")</span>
<span style="color:#333333"><strong>def</strong></span> <span style="color:#880000"><strong>read_item</strong></span>(item_id: int, q: Optional[str] = None):
    <span style="color:#333333"><strong>return</strong></span> {<span style="color:#880000">"item_id"</span>: item_id, <span style="color:#880000">"q"</span>: q}</span></span></span></span>

从键入导入可选

从 fastapi 导入 FastAPI

应用 = 快速 API ( )

@ 应用 . 获取 ( "/" )

防御read_root ( ) :

     返回 { "Hello" : "World" }

@ app . get ( "/items/{item_id}" )

防御read_item (item_id : int , q : 可选 [ str ] = 无 ) :

     返回{ "item_id" : item_id , "q" : q }

注:以上两个函数前面可以加上 关键字async

启动服务,用命令

<span style="color:#444444"><span style="background-color:#f6f6f6"> $  uvicorn main:app --reload  INFO: Will watch <span style="color:#333333"><strong>for</strong></span> <span style="color:#333333"><strong>changes</strong></span> in these directorie<span style="color:#bc6060">s:</span> [<span style="color:#880000">'/Users/yanbin/demo/first-fastapi'</span>]  INFO: Uvicorn running <span style="color:#333333"><strong>on</strong></span> http://<span style="color:#880000">127.0</span>.<span style="color:#880000">0.1</span>:<span style="color:#880000">8000</span> (Press CTRL+C <span style="color:#333333"><strong>to</strong></span> <span style="color:#333333"><strong>quit</strong></span>)  INFO: Started reloader process [<span style="color:#880000">81730</span>] using watchgod  INFO: Started server process [<span style="color:#880000">81732</span>]  INFO: Waiting <span style="color:#333333"><strong>for</strong></span> application startup.  INFO: Application startup <span style="color:#397300">complete</span>.  
</span></span>
Python Web框架比较:Flask与FastAPI的特性和应用场景 本文探讨Python语言中的两大Web框架:Flask和FastAPI。Flask以轻量级和易用性著称,提供高度灵活性,允许开发者自由选择数据库、表单验证库等工具。其核心架构简洁,借助丰富的扩展可显著增强功能。FastAPI则专注于高性能与现代Web开发需求,支持异步编程,具备自动交互式API文档生成功能。两者各具特色,适合不同应用场景。通过对Flask和FastAPI的深入探讨,我们可以清晰地看到这两个框架在不同应用场景中的独特优势。 阅读详情

相关推荐

FastAPI vs Flask:Python Web 开发的最佳选择,性能与灵活性全解析

摘要: FastAPI与Flask是Python两大主流Web框架。Flask以轻量灵活著称,适合小型项目及快速开发;FastAPI则凭借异步支持、高性能和自动文档生成,成为高并发API开发的首选。本文对比了两者的性能、开发效率、异步能力及适用场景,建议根据项目需求选择:Flask适合简单应用,FastAPI更适合高性能及现代化API开发。随着生态发展,FastAPI有望成为未来主流框架,而Flask仍保持广泛适用性。 关键词:FastAPI, Flask, Web框架, 性能对比, 异步编程

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1286

第31课 python中常见的web框架对比(Django,Flask,Tornado,FastAPI等)

开发效率方面Flask:对于简单的小型项目或者快速原型开发效率很高,因为其轻量级,不需要太多配置就能快速启动,但对于大型复杂项目,需要自己集成很多额外组件,随着项目规模增大,开发效率可能会受影响。Django:由于内置了大量实用的组件和功能,在开发大型项目时,一开始就能利用已有功能快速搭建起整体架构,减少很多从零开始开发的工作量,团队协作时按照其规范开发也能保障效率,适合企业级大型Web应用开发。性能方面Tornado。

weixin_45326892的博客 1471

Django vs Flask vs FastAPI: Python后端框架如何选择?

Django是一个高度成熟,功能完善的Python Web框架,其设计目的是减少开发过程中的复杂性和重复性工作。Django提供了ORM(对象关系映射),内置管理界面,用户认证,模板系统等众多功能模块。Django的设计理念是DRY(Don’t Repeat Yourself),旨在减少代码冗余,提高开发效率。它支持多种数据库,并且内置了缓存机制,有助于提升网站性能。Django拥有庞大的社区支持和丰富的插件资源,这使得它成为了构建复杂Web应用的首选框架之一。

cda2024的博客 2877

FastAPI vs Flask 选择最适合您的 Python Web 框架

FastAPI:FastAPI 是一个现代的、高性能的 Web 框架,基于 Python 3.7+ 的类型提示来实现 API。它提供了快速、简单和直观的方式来构建 Web API。Flask:Flask 是一个轻量级的 Web 框架,简单而灵活,适合构建小型到中型的 Web 应用程序。它被广泛用于构建原型和快速开发。

m0_74824954的博客 1392

Python Web框架深度对比:Django vs Flask vs FastAPI(含优缺点与选型策略)

特性DjangoFlaskFastAPI路由定义方式集中式配置(urls.py装饰器(@app.route装饰器(@app.get@app.post动态URL支持正则表达式(转换器(/<int:id>/类型注解(路由文档自动生成需第三方工具(如drf-yasg)需扩展(如Flask-RESTX)内置(基于OpenAPI)示例:定义一个获取用户信息的接口(Django:需在urls.py中注册路由,视图函数处理请求# urls.py# views.py。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1415

Python 框架选择与应用:Flask、Django、FastAPI 对比分析

本文对比了Python三大Web框架Flask、Django和FastAPI的特点与适用场景。Flask作为轻量级微框架,适合小型项目与快速原型开发;Django是全栈框架,提供完整功能集,适合企业级应用;FastAPI则专注于高性能API开发,支持异步编程。文章从灵活性、开发效率、性能等多个维度进行了详细比较,并给出了框架选择建议:小型项目选Flask,复杂系统选Django,高性能API服务选FastAPI。开发者可根据项目需求选择最适合的框架。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1115

ESP-IDF的安装及其在VScode中编译环境的搭建

从安装目录的\Espressif\frameworks\esp-idf-v5.3.2\examples路径中拷贝一个工程到项目中,比如拷贝\get-started下的hello_world文件夹。安装时可能会遇到如下问题,提示:"e:\ssc\software\ESP-IDF\v5.3.2\Espressif\tools\idf-python\3.11.2\python.exe -m pip" is not valid. (ERROR_INVALID_PIP)接着等待安装完成即可,其他步骤同方式1。

Freddy_Ssc的博客 4355

保姆级避坑指南:在NVMe SSD上安装Ubuntu 24.04,搞定RST错误和分区方案

本文提供在NVMe SSD上安装Ubuntu 24.04的详细指南,解决RST错误和分区方案问题。从BIOS设置到分区策略优化,帮助用户充分发挥NVMe固态硬盘性能,避免常见安装陷阱,实现无痛安装和后期调优。

weixin_26976635的博客 560

vcpkg管理OpenCASCADE的5个高效技巧:从多版本共存到离线部署

本文详细介绍了使用vcpkg高效管理OpenCASCADE的5个实用技巧,包括多版本共存、性能优化、团队共享、CI/CD集成和离线部署。通过自动配置和版本控制,vcpkg显著简化了OpenCASCADE的开发环境管理,特别适合工业级CAD开发场景。

rain6的博客 187

基于Pixhawk与OpenMV的无人机视觉引导精准降落系统设计与实现

本文详细介绍了基于Pixhawk飞控与OpenMV视觉模块的无人机精准降落系统设计与实现。系统通过OpenMV识别Apriltag标签,结合MAVLink通信将视觉数据发送给Pixhawk,实现厘米级精准降落。文章涵盖硬件连接、软件配置、核心代码逻辑解析及实战调试技巧,为无人机自动充电、物流配送等场景提供可靠解决方案。

weixin_29189377的博客 320

详解机器人标定

这里是机器人在取料之前,先把自己的角度补正到与 物料当前角度一致,到(X’,Y’)位置处,然后移动 CDx,Cdy,与物料位置也重合,然后去取料。可以使用实物标定,机器人抓住工件摆放9个位置,得到9个机械坐标,相机也得到9个像素坐标,(机器人每次需要回到固定位置拍照),然后标定。(X0,Y0)为旋转中心, (X1,Y1)及(X2,Y2)为工件在视野中旋转角度a的前后坐标,(Xt,Yt)为两点连线的延长。(rx0, ry0)为旋转中心,( x, y)为被旋转的点,(x0,y0)旋转后的点。

weixin_56819992的博客 7628

BLHeli_S电调刷Bluejay固件实战:解锁双向DShot与RPM滤波全攻略

本文详细介绍了如何为BLHeli_S电调刷写开源Bluejay固件,以解锁双向DShot协议与RPM滤波等关键功能。内容涵盖硬件兼容性检查、固件刷写全流程、双向DShot启用与OSD报错解决方案,并对48kHz与96kHz PWM频率的选择提供了实战建议,帮助穿越机玩家在不更换硬件的前提下显著提升飞行性能与操控体验。

weixin_29188997的博客 511

数据库和BI工程师面试题

 一.数据库 1.Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用? 2.Oracle数据库,有哪几类索引,分别有什么特点? 3.Union与Union All的区别? 4.对游标的理解?游标的分类?使用方法? 5.如何查找和删除表中的重复数据?给出方法或SQL。 6.不借助第三方工具,怎么查看SQL的执行计划? 7.创建索引有哪些需要注意的要点?

web_go_run的专栏 1万+

如何使用 SAP ABAP Development Tool 连接 SAP BTP 上的免费 ABAP 编程环境

在云端环境编写 ABAP 代码会遇到一些限制,比如你无法在云端 ABAP 编程环境进行发生在传统 SAPGUI 里的 Dynpro 和 Screen 编程。部分在 SAPGUI 里使用的 List 处理相关的关键字比如 WRITE,还有 CALL TRANSACTION 等代码,也无法在云端使用。 当然如果大家觉得上面提到的这些限制不会影响自己的 ABAP 学习,就可以继续本文的阅读,使用 ABAP Development Tool 登录云端的 ABAP 编程环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1512

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 20个Python实战项目(附源码),拿走就用。
下一篇: Python写业务逻辑的几个编码原则
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值