FastAPI: 极速开发Python Web应用的未来之星

news2025/2/26 2:53:45

我在工作中经常使用Flask来开发Web应用。但是随着项目规模的增长,我发现自己需要写越来越多的重复代码,同时Flask并没有提供一个良好的数据验证和文档生成工具。

有一天,我听说了一个名为FastAPI的框架,它被誉为是Python Web框架的“未来之星”,而且还支持异步请求处理,可以极大提高Web应用的性能。于是我决定尝试一下。

在使用FastAPI之后,我深深感受到了它的优势。使用Python的类型提示,可以让代码更加直观易懂,数据验证也变得非常简单。同时,FastAPI提供了自动生成API文档的功能,这对于团队协作和后续的维护非常有帮助。

在实际开发中,FastAPI也证明了它的高性能和易用性,我用它开发了多个Web应用,都得到了很好的反馈和效果。现在,每当有同事问我要推荐一个Python Web框架时,我总是毫不犹豫地推荐FastAPI。

FastAPI是一个现代的、高性能的Python Web框架,它基于Python的类型提示,使用Python3.6及以上版本构建API。它的优点包括:

高性能:FastAPI支持异步请求处理,可以处理高并发场景,而且运行速度非常快,可以和NodeJS和Go相提并论。
快速开发:FastAPI提供了很多现成的功能和工具,可以大大简化代码开发,让开发速度提高约200%至300%。
更少的Bug:FastAPI使用Python的类型提示和数据验证,可以减少40%开发人员容易引发的错误。
直观:FastAPI完美支持编辑器,可以在开发过程中提供自动补全和语法提示等功能,让代码开发更加直观易懂。
简单易用:FastAPI的API设计非常简单明了,使用起来非常方便,并且有很多详细的文档和教程,可以帮助开发者快速上手。
标准化:FastAPI基于并完全兼容API的开发标准:OpenAPI(以前称为Swagger)和JSON Schema,可以更好地进行团队协作和API文档生成。
FastAPI特点:

· 高性能 -FastAPI非常快。它被认为是目前最快的框架之一。它与NodeJS和Go以及Starlette和Pedantic相当。

· 快速编码 -它允许显着提高开发速度。

· 强大的-它有一个写得很好的文档,我们可以通过阅读其文档使用自己的 API 创建生产就绪的 API。

· 直觉的-它的设计是每个人都可以轻松理解,易于使用并提供出色的编辑器支持。

· 更少的错误 -它减少了大约 40% 的诱发错误。

· 插件 -它提供了使用依赖注入创建插件的工具。

· 类型提示 -我们可以使用类型提示进行数据验证和转换。

· 基于标准 -它基于API,OpenAI和JSON模式的开放标准。

· 简单-它很简单,因此我们可以花更少的时间阅读文档。

在 FastAPI 中,开发者可以使用基于 REST 架构风格的 API 来定义和实现 Web API。

FastAPI 结构

在这里插入图片描述

环境搭建

1、安装 FastAP

pip install fastapi

要求

Python 3.7+

2、安装 Uvicorn

Uvicorn 是一个基于 Python 并使用 ASGI(Asynchronous Server Gateway Interface)协议的高性能Web服务器。ASGI是一个 Python 的异步Web服务器网关协议,它提供了比旧的WSGI协议更高级的异步能力,可以支持异步的HTTP请求和响应。Uvicorn 的主要优点是它可以处理高并发的HTTP连接请求,使用异步I/O的方式实现高效的网络连接处理,同时保持高度的可靠性和稳定性。Uvicorn 可以作为一个独立的Web服务器使用,也可以与其他 ASGI 框架(如FastAPI、Starlette等)一起使用,构建高效、可扩展的Web应用程序。

pip install uvicorn[standard]

在 pip install 命令中,方括号用来表示可选项。在这种情况下,[standard] 表示可选的附加包,可以通过在命令中添加它来安装该包。在这个例子中,[standard] 是用来安装 FastAPI 应用程序所需的附加软件包,包括 Uvicorn 服务器和其它的一些工具和库。这些包通常被称为 FastAPI 的标准依赖项。因此,通过在命令中包含 [standard],可以确保安装 FastAPI 所需的所有依赖项。如果不包括 [standard],则只会安装 FastAPI 包本身,而不会安装其他必要的包。

3、开发工具Pycharm、Sublime、Visual Studio Code等

本课程推荐Visual Studio Code

3.1、安装Visual Studio Code

3.2、安装Python插件

3.3、运行和调试Python程序

  1.   4.第一个Fast API程序
    

1.1、Hello示例代码:

main.py from fastapi import FastAPI

app = FastAPI()

装饰器@app.get(“/”)async def home(): # 路由处理函数

return {"message": "Hello World"} 

1.2、启动应用

在控制台运行如下指令:

uvicorn main:app --reload

· uvicorn:它是一个服务器库。

· main:要启动的脚本文件名。

· app:它是指在main.py文件中创建的FastAPI的对象。

· --reload:代码更改后使服务器重新启动(热部署)。

在浏览器中打开网址http://127.0.0.1:8000/测试

在IDE工具中启动和运行,添加如下代码

if name == “main”:
uvicorn.run(app, host=“0.0.0.0”, port=8000)带有热部署参数代码。

uvicorn.run(“main:app”, host=“0.0.0.0”, port=8000, reload=True)

· app:FastAPI的对象。

· host:服务器主机名,默认是127.0.0.1 (localhost),如果设置0.0.0.0可以在本机之外访问。

· port:主机端口,默认是8000。

· reload:是否支持热部署。

· 1.3 交互式 API 文档与Swagger :

Swagger GUI(Graphical User Interface)是一个 Web 界面,用于显示和操作使用 Swagger 规范编写的 RESTful API(Representational State Transfer Application Programming Interface)。Swagger 是一种 API 规范和工具集,它提供了一种描述 API 的标准格式,以及自动生成 API 文档和客户端代码的工具。

Swagger GUI 可以通过 Web 界面直观地显示和测试 API,提供了方便的 API 调试和交互方式。在 Swagger GUI 中,可以浏览 API 的不同端点和操作,并且可以向这些端点发送请求并查看响应。Swagger GUI 还提供了交互式的文档,以及针对每个端点和操作的请求示例和响应示例。通过 Swagger GUI,开发人员可以更容易地理解和使用 API,同时也可以更快地进行 API 开发和测试。

3、自动生成 API 文档的功能

可以在浏览器中查看 API 文档。这个页面是使用 Swagger UI 生成的,可以交互地浏览 API 的接口、输入参数、响应结果等信息。除了 Swagger UI,FastAPI 还支持 ReDoc 和自定义的文档生成方式。

1、 http://127.0.0.1:8000/docs

2、 http://127.0.0.1:8000/redoc

OK,更多文章敬请其期待。

CSDN学院相关课程:
《Python Web之FastAPI框架实战训练营:老程序员手把d带您学习FastAPI》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

S型加减速速度给定功能块(SCL+ST+梯形图)

S型加减速详细算法公式请参看下面博客文章,这里不再赘述: 博途PLC1200/1500PLC S型速度曲线变频器控制应用(SCL完整源代码)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_Dor的博客-CSDN博客运…

SQLServer 的事件通知

事件通知一、背景知识1.1、事件通知的好处1.2、事件通知概念1.3、事件通知与触发器二、实现事件通知2.1、创建目标服务2.2、创建事件通知三、为事件通知配置对话安全性总结一、背景知识 事件通知将有关事件的信息发送到服务代理服务。通过将有关这些事件的信息发送到服务代理服…

新买的电脑,设置电脑

设置电脑自动清理垃圾 开机后,需要首先设置好让电脑自动定期为你清理垃圾。具体的方法也很简单,右击桌面,找到显示设置。 图片进入后依次点开“储存”-“储存感知”-“配置储存感知立即运行”,设置为“每天”,然后下方…

《花雕学AI》01:尝试使用新必应制作《雕爷学编程》的栏目介绍

跨年头尾三个月,花雕走完塔克拉玛干沙漠回来后,突然发现世界变了,微软投资的ChatGPT火起来了,特别是升级的ChatGPT4.0,更是异常火热!这一个多月来,人工智能AI突然爆发,能做的事情太多…

深度学习中的目标识别

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

干翻Hadoop系列文章【03】:MapReduce概念详解

引言 数据存储在分布式文件系统中HDFS里边,通过使用Hadoop资源管理系统YARN,Hadoop可以将MapReduce计算,转移到有存储部分的数据的各台机器上。 一:概念和原理 1:MapReduce作业 MapReduce作业被称为一个工作单元。…

基于SpringBoot+微信小程序的壁纸小程序

基于SpringBoot微信小程序的壁纸小程序 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景…

Springboot高级(一)缓存

一、缓存结构 二、注解 三、体验缓存 1、开启缓存 EnableCaching SpringBootApplication EnableCaching public class SpringbootCacheApplication {2、标志注解 (1)Cacheable Cacheable(value "emp", condition "#id2", unless…

【李老师云计算】实验一:Hadoop伪分布式集群部署与Eclipse访问Hadoop进行单词计数统计

索引前言实验内容1. 安装虚拟机1.1 安装与激活1.2 ★解决使用虚拟机蓝屏(绿屏)2. 安装CentOS2.1 下载CentOS2.2 VMware新建虚拟机2.3 安装CentOS(包括GUI、主机名)2.4 ★解决已经创建虚拟机改主机名3. VMWare 网络配置3.0 使用VI编辑器和VMware3.0.1 使用VI编辑器3.0.2 使用VMw…

SQL Server 数据操控,视图和索引

文章目录前言1.在student表中插入一行新记录,学号为,姓名为胡明月,性别为男,年龄为,系部为CS2.在student表中插入一条新记录,学号为,姓名为李红,性别为女3.将胡明月的年龄修改为194.…

R语言实践——ggplot2+ggrepel绘制散点+优化注释文本位置

简介 书接adjustText实践——调整matplotlib散点图标签,避免重复 上文中,matplotlibadjustText对于我的实例来说并没有起到很好的效果。所以,博主决定在R中利用gglot2ggrepel绘制,期待效果。 操作过程 博主不常使用R&#xff…

尚融宝14-集成redis缓存

目录 一、简介 1、场景 2、RedisTemplate 二、引入Redis 1、项目中集成Redis 2、添加Redis连接配置 3、启动Redis服务 三、测试RedisTemplate 1、存值测试 2、Redis配置文件 3、取值测试 四、将数据字典存入redis 一、简介 1、场景 由于数据字典的变化不是很频繁,而…

Unity 热更新技术 | (四) Lua语言基本语法及关键知识介绍

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬…

python ——批量读取相同格式文件(多个文件夹/单个文件夹)---nc文件为例

在处理多个相同格式的文件时,python中的许多模块可以为我们提供很多遍历。 比如,我们想读取一个文件夹下多个相同格式的文件时 可以使用os模块, import os以下有几个常见用法: 1、os.path.abspath(path) #返回绝对路径 2、os.pat…

【周末闲谈】畅想AR,AR领域迎来新风口

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? 文章目录周末闲谈前言AR?🤔🤔🤔AR的发展👣&…

Matplotlib数据可视化

Matplotlib是⼀个Python 2D,3D绘图库,它以多种硬拷⻉格式和跨平台的交互式环境⽣成出版物质量的图形。 MatplotlibMatplotlib中文网、Matplotlib官方中文文档。https://www.matplotlib.org.cn/ 1.模块导⼊ import matplotlib.pyplot as plt #使⽤py…

分布式事务详解

🏆今日学习目标: 🍀分布式事务详解 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光…

Web 攻防之业务安全:密码找回安全案例总结.

Web 攻防之业务安全:密码找回安全案例总结 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库,中间件等)、业务系统自身(软件或设备)、业务所…

微软New Bing初体验:AI时代的搜索引擎(内含体验方法)

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…

AI未来十年新范式,生成式人工智能的挑战与机遇

目录0 写在前面1 什么是生成式模型?2 生成式模型的挑战3 自主智能新架构4 持续学习与表征解耦4.1 学习范式4.2 学习架构5 生成式AI与元宇宙6 智慧文档:赋能数字化转型7 结语0 写在前面 2023年3月18日,由中国图象图形学学会(CSIG&…