实战经验分享FastAPI 是什么

news2024/11/28 14:40:42

FastAPI 是什么?FastAPI实战经验分享

![在这里插入图片描述](https://img-blog.csdnimg.cn/7e9e23e6fe3444238413d91f37064b65.png在这里插入图片描述](https://fastapi.tiangolo.com/)

FastAPI 是一个先进、高效的 Python Web 框架,专门用于构建基于 Python 的 API。它是一个开源项目,建立在 Starlette 和 Pydantic 库的基础上,提供了强大的功能和出色的性能。

FastAPI 的主要特性有:

  1. 高效快速:FastAPI 使用现代的异步编程模型,借助 Python 3.7+ 的 async 和 await 关键字,充分利用 Python 异步生态系统,提供卓越的性能和吞吐量。
  2. 自动生成文档:FastAPI 能够自动为你的 API 生成交互式文档,能够自动检测请求参数和响应模型,并生成相应的 API 文档。
  3. 数据验证和转换:FastAPI 基于 Pydantic 库,提供强大的数据验证和转换功能,能够自动处理请求和响应数据的验证、转换和序列化。
  4. 类型提示:FastAPI 借助 Python 的类型提示机制,为请求和响应处理提供强类型支持。这可以减少常见错误,并提供更好的代码提示和可读性。
  5. 安全认证:FastAPI 支持常用的认证方式,如 OAuth2、JWT,并提供对 HTTPS 的支持,确保 API 通信的安全性。
  6. 强大的生态系统:FastAPI 和许多 Python 生态系统的工具和库可以无缝集成,如 SQLAlchemy、Databases、Redis 等。

以上是对 FastAPI 的简要介绍,如有进一步了解,可以访问官网地址:https://fastapi.tiangolo.com

如何使用 FastAPI?
下面的步骤将帮助你开始使用 FastAPI 构建一个简单的 Web 应用。

1、安装 FastAPI:在命令行中运行以下命令安装 fastapi,并安装 uvicorn :

pip install fastapi

2、创建 FastAPI 应用:在你喜欢的 IDE 编辑器中创建一个新的 Python 文件,例如fastapi-demo.py。然后将以下代码复制到文件中:

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():    
return {"Hello": "World"}

上面的代码创建了一个名为 app 的 FastAPI 实例,并定义了一个根路由,返回一个简单的 JSON 响应。

3、运行 FastAPI 应用:在命令行中运行以下命令启动 FastAPI 应用:

uvicorn main:app --reload

FastAPI 将在本地启动一个服务器,并监听默认端口(8000)。你可以在浏览器中访问 http://127.0.0.1:8000,看到 {“Hello”: “World”} 的响应。

4、添加更多的路由和功能:你可以继续在应用中添加更多的路由和功能,根据自己的需求进行扩展:

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):    
return {"item_id": item_id, "q": q}

上面的代码添加了一个名为 read_item 的新路由,它接受一个 item_id 参数和一个可选的 q 参数,并返回一个 JSON 响应。

实践案例
以下是一个使用 FastAPI 构建的实践案例,能够在 IDE 编辑器中直接运行的代码。

from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():    
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):    
return {"item_id": item_id, "q": f"接口id:{item_id}"}
if __name__ == "__main__":    
import uvicorn    
uvicorn.run(app, host="127.0.0.1", port=8000)

复制以上代码到你的 IDE 编辑器中,并运行它。然后通过浏览器访问 http://localhost:8000/,你将看到 {“Hello”: “World”} 的响应。同样地,你也可以访问 http://localhost:8000/items/42?q=somequery,查看带有参数的响应。
在这里插入图片描述

调试 FastAPI
我们可以通过 Apifox 来更方便的调试 FastAPI。

如果想快速的调试一条接口,新建一个项目后,在项目中选择 “调试模式” ,填写请求地址后即可快速发送请求,并获得响应结果,上文的实践案例如图所示:

总结
FastAPI 是一个高性能、易用且现代的 Python Web 框架,它通过使用最新的 Python 特性和异步编程,提供了快速开发 Web API 的能力。该框架不仅易于学习和使用,还具有自动生成文档、数据验证等强大功能。无论是构建小型项目还是大型应用程序,FastAPI 都是一个强大而有效的工具。

现在你已经了解了 FastAPI 的概念和使用方法,你可以访问官方网站并尝试使用 FastAPI 来构建自己的 Web 应用程序。

知识扩展
了解更多 FastAPI 相关使用技巧:(复制链接查看)

FastAPI 并发请求:提升性能的关键特性

https://apifox.com/apiskills/fastapi-concurrent-requests/

FastAPI 与 Flask:Python Web 两大流行框架综合对比

https://apifox.com/apiskills/fastapi-vs-flask/

参考链接:

FastAPI 官方文档

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

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

相关文章

【扩散模型】HuggingFace Diffusers实战

HuggingFace Diffusers实战 1. 环境准备2. DreamBooth2.1 Stable Diffusion简介2.2 DreamBooth 3. Diffusers核心API4. 实战:生成美丽的蝴蝶图像4.1 下载数据集4.2 调度器4.3 定义扩散模型4.4 创建扩散模型训练循环4.5 图像的生成方法1.建立一个管线方法2.写一个采样…

python:使用Scikit-image对遥感影像进行小波变换特征提取(wavelet)

作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-image库进行单波段遥感图像的特征提取,重点关注小波变换方法,特别是Gabor滤波器。我们将详细解释代码中的参数以及如何调整它们以满足不同需求。 小波变换是一种数学工具,用于将信号分解成不同尺度和频率的成…

CAN协议详解

1.CAN 协议概述 简介 CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。是一种串行的差分总线&#x…

TLSF——一种高效的内存池实现

Arena 起源于计算内核关于堆内存使用的相关优化。 系统调用分配和回收内存的开销较大,一个优化是预先通过系统调用分配一大块内存,然后每次内存使用从大块内存中切出一小份内存使用。 Arena用于维护大块内存切分出来的大量小块内存,达到高效…

网站不被谷歌收录的常见原因及解决办法

现如今的互联网中,流量获取的渠道多种多样,但对于独立站而言,Google仍然是一个重要的流量来源。这是因为Google拥有庞大的用户基础,通过Google可以让潜在用户更容易发现我们的网站。然而,现实情况是,一些网…

STM32 — PWM介绍和使用PWM实现呼吸灯效果

目录 PWM介绍 PWM输出模式: PWM占空比: PWM周期与频率公式: 使用PWM点亮LED灯实现呼吸灯效果 1. 在 SYS 选项里,将 Debug 设为 Serial Wire​编辑 2. 将 RCC 里的 HSE 设置为 Crystal/Ceramic Resonator 3. 时钟配置 4.配…

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】

信息系统项目管理师教程 第四版【第3章-信息系统治理-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

信息系统项目管理师教程 第四版【第2章-信息技术发展-思维导图】

视频格式高效转换:MP4视频批量转MKV格式的方法

随着数字媒体技术的不断发展,视频格式转换已经成为了我们日常工作中不可或缺的一部分。不同的视频格式适用于不同的场景和设备,因此将视频从一种格式转换为另一种格式往往是我们必须完成的任务。在本文中,我们将重点介绍如何运用云炫AI智剪高…

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词(或动词短语&#…

SpringCloud 微服务全栈体系(六)

第八章 Gateway 服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管…

RK3568平台 IIC子系统框架

一.简介 IIC只有两条线,一条串行数据线SDA;一条是时钟线SCL。使用SCL,SDA这两条线就实现了设备之间的数据交互。 I2C通信可以一对一(1个主设备对1个从设备),也可以一对多(1个主设备对多个从设…

React Router初学者入门指南(2023版)

React Router,简单来说,是一个帮助处理React应用程序中导航和路由的库。它是用于管理React中路由的最流行的路由工具。如果你对路由的概念不熟悉,可以将其视为在网站的不同部分之间导航的过程。例如,当你进入网站的“联系我们”部…

UE5实现相机水平矫正

UE5实现相机水平矫正 思路,用HIT获得基于相机视角的 离散采样点,然后根据距离相机距离进行权重分析。 距离越近,采样约中心,即越接近人眼注意点,最后算出加权平均高度,赋予给相机,相机将水平旋…

C++ -- 深入理解多态

前言:多态的概念,通俗地来讲就是多种形态。当我们要完成某个行为的时候,不同的对象去完成时会产生不同的状态,这就叫做多态。具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。多态在C的类和对象中…

python裁剪图片

我原本想找到一个小一点的彩色人脸数据集,但是都没有找到合适的 但是我找到了一个人脸数据集的封面 于是我把这两个图片裁开,得到了6464张彩色人脸照片 from PIL import Image# 打开大图 big_image Image.open(female.jpg) # 获取大图的宽度和高度 wid…

windows 系统不设置密码也能远程登陆

前言 如果windows系统不设置密码,默认情况下是不能远程登陆的 解决办法 按下winr,输入gpedit.msc 再回车 点击windows设置 ----安全设置 ------本地策略-----安全选项 设置为禁用 远程就可以不输入密码了

PMI-ACP(103:1-16)

英文名:ACP 外文名:Agile Certified Practitioner 中文名:敏捷管理专业人士资格认证 是由 美国项目管理协会 PMI Project Management Institute 发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证。 一年开展4次考…

摆玩具[算法赛](差分)

本题链接:用户登录 题目: 样例: 输入 5 2 2 5 7 10 13 输出 8 思路: 由题意,这是一个递增的数组,其次要求最小的极差,对 数组 进行分成 k 个分段数组。 由于是一个递增的数组&#xf…

postgresql14管理(六)-备份与恢复

定义 备份(backup):通过物理复制或逻辑导出的方式,将数据库的文件或结构和数据拷贝到其他位置进行存储; 还原(restore):是一种不完全的恢复。使用备份文件将数据库恢复到备份时的状…