社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

重磅!锋哥的FastAPI python web开发课程正式发布!

java1234 • 1 周前 • 79 次点击  

大家好,我是锋哥,就在刚刚,锋哥把FastAPI python web开发技术课程更新完了。一共14讲。

图片

FastAPI视频教程B站更新地址:

https://www.bilibili.com/video/BV1hj756zEED/

FastAPI是一个现代、高性能的Python Web框架,专为构建API而设计。它基于标准的Python类型提示(Type Hints)构建,自2018年底由Sebastián Ramírez(塞巴斯蒂安·拉米雷斯)发布以来,已成为Python生态中发展最快的框架之一。

FastAPI的官方网站是:https://fastapi.tiangolo.com

网站提供多语言支持,中文文档的入口是:https://fastapi.tiangolo.com/zh/

图片
本课程主要介绍和讲解FastAPI简介,HelloWorld实现,自动生成交互式API文档,路径参数,查询参数,请求体,参数校验,响应模型,表单数据和模型,中间件,依赖注入,集成SQLAlchemy ORM操作数据库,集成Pydantic数据校验等
图片

高清视频+源码+领取。

扫描下方公众号【python222】回复888

可获取下载链接

👇👇👇

图片


👆长按上方二维码 2 秒
回复「888 」即可获取


后续还要安排一个FastAPI实战课程 -  基于LangChain的带AI智能客服的微信小程序商城系统(RAG+FastAPI+Vue3) Python Agent VIP项目实战。如需购买锋哥的Python VIP,可以提早下手。

2026年,锋哥又开始收Python+AI大模型学员了!目前活动,送AI编程+Java编程 VIP


下面我们文章里也介绍下FastAPI,以及实现一个HelloWord。让大家对FastAPI有一个快速的了解和入门。(具体学习还是看锋哥的视频教程哈)

💡 为什么选择FastAPI?

FastAPI的核心设计目标是解决传统框架(如Flask、Django)在异步支持、开发效率和性能上的痛点,其主要优势体现在以下几个方面:

  • 🚀 高性能 (High Performance):FastAPI的性能与NodeJS和Go等语言编写的框架相当,是Python中最快的框架之一。这得益于其底层基于Starlette(ASGI框架)和Pydantic(数据验证库)。在TechEmpower的基准测试中,其性能远超Flask和Django。

  • ⚡️ 极速开发 (Fast to Code):官方估计,使用FastAPI开发功能的速度能提升约200%到300%。这主要归功于其高度依赖类型提示的特性,减少了大量样板代码。

  • 🐛 更少错误 (Fewer Bugs):借助类型提示和Pydantic的自动数据验证,FastAPI能减少约40% 由开发者引起的人为错误。

  • 📖 自动生成文档 (Automatic Documentation):这是FastAPI最受欢迎的特性之一。它基于OpenAPI标准,能自动为你的API生成交互式文档。文档支持 Swagger UI 和 ReDoc 两种界面,你可以在浏览器中直接调用和测试API。

  • 🧩 强大的依赖注入系统 (Dependency Injection):FastAPI包含一个极其易用但功能强大的依赖注入系统。依赖项本身也可以有依赖项,形成一个层次结构或依赖图,这一切都由框架自动处理,这有助于保持代码的模块化和可测试性。

  • 🔐 内置安全功能 (Security):内置了对OAuth2JWT(JSON Web Tokens) 等安全认证机制的支持。

🧩 核心架构:Starlette + Pydantic

FastAPI的强大并非凭空而来,它巧妙地站在了巨人的肩膀上:

  • Starlette:一个轻量级的ASGI(异步服务器网关接口) 框架,为FastAPI提供了强大的异步Web工具支持。

  • Pydantic:一个数据验证和设置管理的库,它利用Python类型提示进行数据验证、序列化和反序列化。

🎯 适用场景

凭借其高性能和开发效率,FastAPI特别适合以下场景:

  • 构建高并发API服务,例如支付网关、实时数据推送服务。

  • 作为微服务架构中的核心组件。

  • 机器学习模型提供高性能的API服务接口。

  • 开发需要WebSocket实时通信的应用。


FastAPI和Flask,Django的对比

对比维度FastAPIFlaskDjango
框架类型现代异步 Web 框架(偏向 API 开发)微框架(Micro-framework)全能型(Batteries-included)全栈框架
底层协议ASGI(原生异步非阻塞)WSGI(同步阻塞,异步需额外借助 Quart 等)WSGI(主流),现已部分支持 ASGI(Django 3.1+)
性能/速度 极高(Node.js/Go 级别)中等相对较低(受限于同步架构和庞大的内置组件)
数据验证原生支持(基于 Pydantic,自动校验、序列化)需借助第三方库(如 Marshmallow、Pydantic)通过 Forms 或 DRF(Django REST Framework)序列化器
ORM / 数据库无内置 ORM,需自行集成(SQLAlchemy 等)无内置 ORM,需自行集成(SQLAlchemy 等)内置强大 ORM(自带迁移、关联查询、聚合等)
API 文档自动生成(内置 Swagger UI 和 ReDoc,开箱即用)需手动配置或使用扩展(如 Flasgger)核心无,需借助 DRF 的 drf-yasg 或 Spectacular 生成
后台管理 无,需自行开发或集成(如 SQLAlchemy Admin)无,需自行开发(如 Flask-Admin)内置 Admin 后台(增删改查开箱即用,功能极强)
模板引擎无(推荐作为纯后端 API 使用,可集成 Jinja2)内置 Jinja2(渲染 HTML 页面非常方便)内置 Django Template(功能完善,自带标签/过滤器)
依赖注入原生支持(Dependency Injection 机制优雅)需手动实现或借助扩展无原生概念,需手动解耦或借助第三方库
学习曲线中等(需熟悉 Python 类型提示和异步基础)(路由和视图简单直观,2小时入门)较高(概念极多:MTV、中间件、信号、Form、Admin 等)
项目结构高度自由,开发者自行设计高度自由,非常灵活强约束(约定大于配置,目录和命名规范严格)
生态与扩展较新但增长迅猛,生态围绕异步库(HTTPX、SQLAlchemy Async)生态极其丰富,历经时间考验,扩展极多生态极其丰富,“万物皆可插”,三方库/中间件海量
适用场景高并发 API 服务、微服务架构、实时聊天/流式响应、前后端分离项目小型项目、简单 Web 页面、快速原型验证、轻量级 API大型企业级 Web 应用、内容管理系统(CMS)、电商后台、自带后台管理需求的快速开发

编写FastAPI HelloWorld项目

首先磁盘里先新建一个空项目目录fastapi_pro

图片

然后打开PyCharm,点New Project,左侧选FastAPI,定位fastapi_pro目录,以及选虚拟环境,Python版本11,最后点Create创建项目。

图片

目录结构:左侧venv是虚拟环境,包括配置和第三方库,main.py是项目启动入口文件,test_main是项目测试文件。

图片

我们点击右上角 绿色 三角形 启动项目

图片

接着控制输出,启动成功。

点击按钮运行,相当于执行了  python.exe -m uvicorn main:app --reload

图片

我们点击 http://127.0.0.1:8000/链接测试,说明测试成功。

图片

我们来解释下 python.exe -m uvicorn main:app --reload

这个命令是用Python模块方式启动Uvicorn服务器,来运行一个名为main.py文件里的FastAPI(或任意ASGI)应用,并开启了热重载功能。它是在Windows环境下开发调试时最常用的启动方式。

我们可以把这条命令拆解成5个部分来理解:

  1. python.exe

这是Python解释器的可执行文件。在Windows系统中,.exe后缀明确指定了要运行的程序。如果你在macOS或Linux上,通常只需要输入pythonpython3

  1. -m

这是Python的命令行选项,全称是 “module”(模块)。它的作用是告诉Python:“不要执行一个脚本文件,而是去执行一个库(模块)”。它会去Python的安装路径下寻找名为uvicorn的文件夹,并运行里面的 __main__.py文件。

对比一下

  • 不加-m,通常需要写完整路径,比如python C:\path\to\uvicorn\__main__.py ...

  • 加了-m,Python会自动帮你在sys.path(系统路径)中搜索这个模块,用起来更简洁、更标准。

  1. uvicorn

这是要运行的模块名称。当Python收到-m uvicorn时,它会去执行Uvicorn库的入口代码,相当于启动了这个Web服务器程序。

  1. main:app

这是告诉Uvicorn 具体要去启动哪个应用,它由两部分组成,用冒号:隔开:

  • main:指的是main.py这个Python文件名(注意,不需要加.py后缀)。

  • app:指的是main.py文件中创建的应用实例变量。在FastAPI中,通常是app = FastAPI()这行代码创建的对象。

如果你的文件名是server.py,实例叫application,这里就要改成server:application

  1. --reload

这是一个开关参数 ,意为“重载”。当加上它后,Uvicorn会监听项目目录下的所有Python文件变化。

  • 作用:当你修改了main.py或其他导入的代码并保存文件时,Uvicorn会自动检测到变动,并优雅地关闭旧进程、启动新进程。

  • 适用场景仅在开发调试阶段使用,能极大提升开发效率,省去手动重启服务器的麻烦。

  • 警告在生产环境(线上服务器)绝对不要加这个参数,因为文件监听会消耗大量服务器资源,且自动重启可能导致服务中断或状态丢失。


这里自动重载很有用,我们平时开发,经常改代码,加了 --reload,自动冲重新加载,就不用每次点重启按钮了。

比如我们修改下代码,

图片

修改代码后,自动重启项目:

图片

当然 我们还可以在终端里启动,启动命令 uvicorn main:app --reload

效果和前面一样。

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/200269