FastAPI教程

fastapi教程(一):初识 fastapi FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。 阅读详情


请添加图片描述


第一章 基础知识

        FastAPI框架不仅具有Flask或Django的Web核心功能,还兼具异步特性,可以同时兼容同步和异步这两种模式运行。换句话,用户可以使用同步编写API,也可以使用异步的方式编写API。FastAPI之所以被大众所认可,主要原因有两个:一是支持ASGI(Asynchronous Seriver Gateway Interface)协议的Web应用框架,即同时兼容ASGI和WSGI应用;二是支持异步协程处理,能快速处理更多的HTTP请求。
        ASGI是异步服务器网关接口,和WSGI一样,都是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。但ASGI是WSGI的一种扩展,并且提供异步特性和WebSocket等支持。同时,ASGI兼容WSGI,所以ASGI在支持同步的同时,也支持异步,内部可以通过一个转换装饰器进行相互切换。
        并发通常是指在单核CPU下,同时运行多个应用程序。然而本质上,操作系统在处理任务时任一时刻点都只有一个程序在CPU中运行。我们之所以能看到多个应用程序同时执行,是因为操作系统给每个应用程序都分配了一定时间片,每个任务执行完分配的时间片后,操作系统通过调度切换到下一个任务执行,而这些时间片对于我们来讲短到无法感知。
        并行对于单核CPU不存在这样的说法,对于多核CPU,任务就可以分配到不同CPU执行,在这种情况下,在多个CPU上主席那个的任务就不会相互干扰,这才是真正的多任务同时进行。
        同步(Synchronous)是在强调多个任务在执行过程,其中的某个任务不允许被中断。多个任务执行是协调一致且有序的,若某个任务在执行过程中受阻,其他任务需要等待。
        异步(Asynchronous)是在强调多个任务可以分开执行,彼此之间相互不影响,若某个任务受阻,其他任务无需等待,但是任务执行的结果依然保持一致。如果某个任务被划分为多个任务单元,那么这些任务单元都是可以分开执行,多任务单元执行可以是无序的。
        注意:同步在调用IO操作时,必须等待IO操作完才能返回;异步在调用IO操作时,不必等待IO操作完成就可以返回。
        asyncio是Python官方提供的用于构建协程的并发应用库,是FastAPI实现异步特性的重要组成部分。基于asyncio,可以在单线程模式下,处理更多并发任务,它是异步IO框架,而异步IO是基于事件触发机制来实现异步回调。
        公网IP地址:互联网上的所有人都可以通过这个IP地址访问到服务。公网IP地址一般需要向服务提供商申请获得。
        内网IP地址:主要是指个人计算机内的局域网址。如果服务是通过内网IP开启,则只能使用本机或所属局域网内的其他内网IP地址访问,外部人员无法通过内网IP地址进行访问。

第二章 安装

第一步:安装FastAPI框架

pip install "fastapi[all]"
pip install "fastapi[standard]"

第二步:安装ASGI 服务器

pip install "uvicorn[standard]"

安装教程中的两个问题:

  1. FastAPI 的主要功能是什么?
    FastAPI 是一个现代、高性能的Python Web框架,主要用于快速构建API(如RESTful API或WebSocker服务)。由于FastAPI早期版本没有提供基本的网关服务,所以需要借助外部的网关服务器来提供Web访问的基础架构。
  2. Uvicorn ASGI 网关服务器的主要功能是什么?
    Uvicorn 是一个轻量级ASGI(异步服务器网关接口),专为运行FastAPI等异步框架设计。

第三章 实践与应用

3.1 简单案例

第一步:创建一个fast_service.py文件

"""
 @app.get()是pyhon里面的装饰器,用来创建一个API端点路由请求,该装饰器表示当前API只能使用GET请求方式进行请求处理。
 "/"表示请求访问URL径路地址;
 tags=["app实例对象注册接口示例"]表示这个API归属于'app实例对象注册接口示例'分组标签。
 注意:@app.get()装饰函数可以def定义的同步函数,也可以是async def定义的协程函数。同步函数会运行于外部线程池,
      协程函数会运行与异步事件循环中。
"""
from fastapi import FastAPI

# 创建app实例对象
app = FastAPI(
    title="ef算法",
    description="以下是ef文档介绍和描述",
    version="0.0.1",
)

# 使用app实例对象来装饰实现路由注册
@app.get("/", tags=["app实例对象注册接口示例"])
def read_root():
    return {"message": "Hello World"}

第二步:启动方式

  1. 命令启动
    (1)开发模式启动
fastapi dev .\fast_service.py  # 开发模式

(2)生产模式启动

fastapi run .\fast_service.py  # 生产模式

结果:

(py310) PS E:\fault_diagnose\example\service> fastapi dev .\fast_api_service.py
   FastAPI   Starting development server 🚀
             Searching for package file structure from directories with __init__.py files
             Importing from E:\fault_diagnose\example\service
    module   🐍 fast_api_service.py
      code   Importing the FastAPI app object from the module with the following code:
             from fast_api_service import app
       app   Using import string: fast_api_service:app
    server   Server started at http://127.0.0.1:8000
    server   Documentation at http://127.0.0.1:8000/docs
       tip   Running in development mode, for production use: fastapi run

(3)Uvicorn启动

uvicorn fast_service:app --reload
<# 
	 用来启动fast_service中的app对象
	 --reload主要用于热启动,这个参数主要用于在编写代码阶段,若需要对当前代码进行改动,那么代码改完后
	 程序会自动重启服务的进行,使修改及时生效,正式部署到生产环境禁止使用该参数。
#>
uvicorn fast_service:app --reload --host 0.0.0.0 --port 8888

        如果希望对外允许访问服务,可以 – host 参数设置为0.0.0.0(表示本机上所有IP地址,也包括回环地址127.0.0.1。如果本机存在多网卡情况,则0.0.0.0是所有网卡IP的集合。如果使用host=0.0.0.0绑定IP地址,则表示服务进程会接受来自所有网卡的IP地址请求。此时,如果本机防火墙关闭或开启相关允许机制,则当前局域网内的其他人也可以通过访问本机IP地址的形式请求到接口服务),如果希望自定义监听端口,可以添加 - -port 参数设置为16000。
        注意:127.0.0.1是一个回环地址,也可以认为127.0.0.1和localhost是等价的。其中localhost是一个域名,这个域名指向IP地址127.0.0.1。
结果:

(py310) PS E:\fault_diagnose\example\service> uvicorn fast_api_service:app --reload
INFO:     Will watch for changes in these directories: ['E:\\fault_diagnose\\example\\service']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [24528] using WatchFiles
INFO:     Started server process [16544]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
  1. 程序启动
import uvicorn

from typing import Union
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello World"}

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

if __name__ == "__main__":
    uvicorn.run("fast_api_service:app", host="0.0.0.0", port=8000, reload=True)

        uvicorn提供参数可通过官网进行学习:https://www.uvicorn.org/。
第三步: 访问

Swagger UI模式下,服务启动后,通过浏览器访问:http://127.0.0.1:8000/docs
PostAPI 访问:127.0.0.1:8000

3.2 URL配置多个http请求

        FastAPI提供了@app.api_route()来支持配置路由函数使用不同http请求方法,示例代码如下:

import uvicorn
from fastapi import FastAPI

# 创建app实例对象
app = FastAPI(
    title="变电站主设备算法",
    description="以下是上海艾飞能源科技有限公司文档介绍和描述",
    version="0.0.1",
    debug=True,
    license_info={
        "name": "版权归上海艾飞能源科技有限公司所有 version 0.0.1",
        "url": "https://www.energyfuture.cn"
    },
    routes=None
)

# 使用app实例对象来装饰实现路由注册
@app.api_route(path="/fault_diagnose", methods=["POST", "GET"])
async def read_root():
    return {"message": "Hello World"}
如何评价最近爆红的FastAPI? 一度觉得sanic是pythonweb框架的未来,支持异步,性能好,类flask的语法,代码简单,没想到被fastapi截胡了,fastapi在github的上星速度非常快。它在怎么样把后端api做好的这件事情上,做的比sanic更全面,更彻底。是用于构建WebAPI的现代、开源、快速、高性能的Web框架,它基于Python3.6+标准类型提示,支持异步,正如它的名字,FastAPI就是为构建快速的API而生。... 阅读详情

相关推荐

FastAPI Web框架教程 第1章 快速上手

FastAPI 是一个。

此博客内容主要是小可日常工作中的一些问题解决的记录整理而成 3501

FastAPI使用教程

二、模板 创建 main.py 文件,内容如下 三、启动命令 ps:127.0.0.1:8000 127.0.0.1:8000/docs【Swagger UI 提供的api文档】 127.0.0.1:8000/redoc【ReDoc 提供的api文档】 代码 调用方法 2.指定数据类型的路径参数 代码 调用方法 3.枚举路径参数 代码 调用方法 4.匹配所有路径 代码 调用方法 5.普通传参 代码 调用方法 6.必备参数 代码 调用....................................

什么都干的派森 1万+

FastApi教程

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

小石潭记丶 1560

Python从入门到精通1:FastAPI

FastAPI 是一个基于 Python 3.8+ 的现代 Web 框架,专注于构建高性能 RESTful API。基于 Starlette 和 Pydantic:提供异步支持和严格的数据验证。自动生成 API 文档:内置 Swagger UI 和 ReDoc,开发者无需手动维护文档。类型提示(Type Hints):利用 Python 的类型系统实现输入参数验证和代码提示。FastAPI 凭借其高性能和开发效率,已成为构建现代 API 的首选框架。基础路由设计与参数验证。

m0_74488469的博客 2万+

FastAPI 安装使用教程

FastAPI是一款基于Python 3.7+的高性能Web框架,支持类型提示和异步编程。本文介绍了FastAPI的安装和基本使用,包括创建虚拟环境、安装依赖、编写第一个API示例等。文章还涵盖了路由参数、请求体验证、项目结构推荐、依赖注入等核心特性,并提供了部署建议和常见问题解答。通过Uvicorn服务器运行项目后,可自动生成Swagger和Redoc文档。文章最后推荐了官方文档等学习资源,适用于快速上手API开发。

真正的大师永远怀着一颗学徒的心 1372

FastAPI系列教程18:fastapi utils,改造你的FastAPI程序

本节我们介绍fastapi utils,这是一个细致的实用工具库,它可以帮助我们使用OOP结构来组织路由、服务及数据库模型;同时它也针对sqlalchemy的使用进行了扩展;最后它还提供了一些贴心的小功能如任务调度工具、计时中间件等等。

GeekABC 1458

OpenAPI 转 FastAPI 项目教程

OpenAPI 转 FastAPI 项目教程 项目介绍 openapi-to-fastapi 是一个开源项目,旨在从多个 OpenAPI 规范生成 FastAPI 路由。该项目最初是为了解决从多个 OpenAPI 规范创建 API 并确保传入请求和传出响应与规范中定义的模型一致的问题。尽管该项目目前仍处于实验阶段,并且有一些技术限制,但它为需要从 OpenAPI 规范生成 FastAPI 路由的开...

gitblog_00997的博客 1037

Cursor设置界面汉化保姆级教程:手把手教你修改JS文件实现中文界面(附避坑指南)

本文提供Cursor编辑器设置界面汉化的详细教程,从定位JS文件到安全修改实现中文界面,包含必备工具清单、文件路径指引和常见问题解决方案。通过手把手教学帮助用户轻松完成汉化,提升使用体验,特别适合不熟悉英文界面的开发者。

weixin_29007809的博客 1412

FastAPI中文教程

⬇️ 整理了一些 FastAPI 笔记,有兴趣的工友可以看看 ⬇️。

weixin_39415598的博客 379

研一小白投稿SCI:Applied Intelligence从提交到Under Review的保姆级避坑指南

本文为研一学生提供Applied Intelligence期刊投稿的详细指南,涵盖格式校验、状态解析及审稿回应策略。特别强调声明文件、LaTeX模板的常见错误及应对方法,帮助新手避开高频踩坑点,提升投稿成功率。

weixin_29230805的博客 493

电动汽车整车控制器 UDS诊断功能开发调试优化方法

摘要:通过某电动汽车VCU开发过程中,UDS诊断功能的调试,发现一些测试中存在的问题,比如覆盖度不够、效率低下等,提出了相应的优化方法,并经过测试验证其可行性,此方法亦可推广应用至BMS、HCM等其他控制器的UDS诊断开发调试过程中。希望能给相关技术人员带来参考和帮助。

qq_43011586的博客 2142

fastapi教程——进阶(一)

一个简单的栗子 from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"} FASTAPI继承Starlette,因此在Starlette中的所有可调用的对象在FASTAPI中可以直接引用 编写步骤 步骤一:导入Fast...

一只路过的小码农cxy 2万+

字节跳动高频111道核心前端面试题解析,web开发增强

但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。自定义指令(v-check、v-focus)的方法有哪些?v-model是什么?

2401_84094620的博客 1199

FastAPI Redis 缓存项目教程

FastAPI Redis 缓存项目教程 项目介绍 FastAPI Redis Cache 是一个简单且健壮的缓存解决方案,专为 FastAPI 端点设计,利用 Redis 的强大功能。该项目旨在通过缓存机制提高 FastAPI 应用的性能和响应速度。Redis 作为一个高性能的键值存储系统,特别适合处理低延迟访问需求。 项目快速启动 安装依赖 首先,确保你已经安装了 fastapi 和 redi...

gitblog_00318的博客 1155

SCCM实战指南:从零搭建企业级Windows自动化部署平台

本文提供了一份详细的SCCM实战指南,手把手教你从零搭建企业级Windows自动化部署平台。内容涵盖环境规划、AD架构扩展、SQL Server配置、SCCM主站点安装,以及最终实现操作系统镜像的自动化部署,旨在帮助IT管理员彻底告别手动装机,实现高效、规范的Windows设备批量管理。

weixin_29251337的博客 637

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 376

FastAPI JWT 项目教程

FastAPI JWT 项目教程 1. 项目的目录结构及介绍 fastapi-jwt/ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── config.py │ ├── models/ │ │ └── user.py │ ├── routes/ │ │ └── auth.py │ ├── services/ │ ...

gitblog_00151的博客 505

交通规划仿真软件:TransCAD_(7).公交系统规划与分析

通过TransCAD进行公交系统规划与分析,可以有效地评估公交网络的性能,优化线路设计,提高服务质量。数据准备、模型建立、仿真运行和结果分析是公交系统规划与分析的关键步骤。在实际应用中,规划者和分析师可以根据仿真结果提出具体的优化建议,不断完善公交系统的运行效率和乘客体验。

kkchenjj的博客 954

FastAPI 初学者教程

安装和配置 FastAPI。创建简单的 API 路由。使用 Gunicorn 和 Uvicorn 部署 FastAPI 应用。使用 Bash 脚本启动和停止应用。管理日志输出。这些步骤为你构建和部署基于 FastAPI 的应用提供了一个基础框架,接下来你可以根据实际需求进行功能扩展和优化。

baby_jwdlh的博客 1060

uniapp - 微信授权登录报错 errMsg“:“login:fail send“ | “code“:-100 | “innerCode“:-6,解决uni-app调用微信登录时没有响应且返回错误

uni-app,微信登录,微信登录报错,微信小程序,支付宝小程序,安卓app,苹果ios,nvue,H5网页网站,uniapp苹果安卓app,微信授权登录,uniAppAPP端微信登录报错,微信确认登录界面后点击登录报错,"errMsg":"login:failsend","errCode":-100,"code":-100,"innerCode":-6,都配置好了还是报错怎么办,uniapp微信授权登录报错,UniApph5对接微信登录出现错误,appid,应用签名,微信登陆,code:-100

🏆 前端领域优质创作者 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OpenAI Plugin FastAPI 项目教程

OpenAI Plugin FastAPI 项目教程 项目介绍 OpenAI Plugin FastAPI 是一个基于 FastAPI 的插件式架构项目,由 Azure Samples 团队开发。该项目集成了 OpenAI 的 GPT 模型和其他先进的自然语言处理技术,为开发者提供了一个高效、易用的平台,用于快速构建聊天机器人、文档生成、文本摘要等应用场景。通过插件化设计,开发者可以按需选择功能模...

gitblog_00850的博客 968

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

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

FastAPI Admin 项目教程

FastAPI Admin 是一个基于 FastAPI 和 TortoiseORM 的高效管理仪表盘,其界面设计灵感来源于 Django Admin。该项目提供了一个功能丰富的后台管理界面,适用于需要快速搭建管理后台的开发者。 ## 项目快速启动 以下是 FastAPI Admin 的快速启动指南,包括安装和基本配置。 ### 安装 首先,通过 pip 安装 fastapi-admin: ``...

gitblog_00772的博客 1520

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

还在学Django! FastAPI Web 框架教程来了!

"""main.py

2401_86168842的博客 1450

FastAPI 完整教程

FastAPI是一个现代、高性能的Python Web框架,基于标准Python类型提示构建。截至2025年,它已经成为构建API的首选框架之一,主要优势包括: - 极高的性能,可与Node.js和Go相媲美 - 自动生成交互式API文档(Swagger UI和ReDoc) - 基于Pydantic的数据验证,类型提示即文档 - 支持异步编程,充分利用现代硬件性能 - 易于学习和使用,与现有Python生态系统兼容

桃李不言下自成蹊 1883

FastAPI Keycloak 集成教程

FastAPI Keycloak 集成教程 项目介绍 FastAPI Keycloak 是一个旨在简化 Keycloak(OpenID Connect)与 Python 尤其是 FastAPI 集成的项目。FastAPI 不是必需的,但由于其特定功能,建议使用。目前,此包仅支持密码和授权码流程。get_current_user() 方法接受任何使用 Keycloak 私钥签名的 JWT。 项目快速...

gitblog_00415的博客 838
上一篇: 时间序列分析教程
下一篇: 人工智能算法加密、部署
编码雪人
博客等级 码龄7年 177粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值