整体的介绍 FastAPI,快速上手开发,结合 API 交互文档逐个讲解核心模块的使用
体验新一代高性能 Python Web 框架,本课程将从 Hello World 开始引导同学们学习 FastAPI 框架的所有知识点。从框架特性一览,到 ASGI 服务介绍,第三章开始会以全球 COVID-19 感染数据查询为功能场景,依次讲解 FastAPI 的 API 交互文档使用,如何使用 Pydantic 定义和规范数据格式、类型,各种请求参数和验证,Jinja2 模板渲染和 Static 静态文件配置,FastAPI 的响应处理和配置,通过代码示例讲解依赖注入系统的所有知识,数据库配置与 SQLAlchemy 的使用,大型工程应该如何设计目录结构。框架的安全、认证、授权,中间件开发,跨域资源共享的实现,后台任务和测试用例的编写。
- 了解 FastAPI 框架特性,相对 Django/Flask 的优势
- Pydantic 定义和规范数据格式、类型
- 如何定义各种请求参数和验证,包括路径参数、查询参数、请求体、cookie、header
- Jinja2 模板渲染和 Static 静态文件配置
- FastAPI 的表单数据处理、错误处理、响应模型、文件处理、路径操作配置等
- 全面学习 FastAPI 的依赖注入系统
- FastAPI 的安全、认证和授权,OAuth2 认证和 JWT 认证的实现
- FastAPI 的数据库配置与 SQLAlchemy ORM 的使用
- 大型工程应该如何目录结构设计,多应用的文件拆分
- FastAPI 的中间件开发
- FastAPI 中跨域资源共享 CORS 的原理和实现方式
- 如何编写后台任何和测试用例"
任何想学习Python开发的同学,尤其是需要高效率完成高并发、高性能项目的同学。
- 简易版前端效果
- API交互文档 - Swagger UI
- 第三章的接口
- 第四、五章的接口
- 接口的参数、返回的状态码、描述
- 接口认证的效果
- 第七、八章和
Coronavirus
应用的接口 - 城市信息表
- 感染数据表
介绍本课程的学习内容和目标,如何学习本课程,展示最终代码和效果,引导同学们对 FastAPI 框架有一个基本的了解,并能够在课程结束后独立使用 FastAPI 完成 RESTful API 接口开发。
图文列举本章节要讲的内容
介绍 FastAPI 有哪些突出特点,浏览官网文档中的 Feasures 一览
从开发效率、性能测评、框架生态、社区支持、学习难易程度多个角度对比 Django/Flask/FastAPI。性能评测参考 https://www.techempower.com/benchmarks 的Web Framework Benchmarks
介绍 Starlette 是个什么项目;IDE 开发时 Python 3.5+ 版本的 "type hints" 的好处:简短、直观和标准的 Python 类型声明;介绍 Pydantic 包,FastAPI 项目的开发为什么要使用 Pydantic
讲解什么是 ASGI 服务,介绍部署 FastAPI 项目需要用到的 Uvicorn 或 Hypercorn
使用 Virtualenv 搭建 FastAPI 项目开发环境,安装 FastAPI,Pydantic,Uvicorn 等
基于之前的课程经验,给同学们重点提示 Python 项目开发中包的版本问题,如何阅读报错信息,怎么解决不同依赖包版本不兼容的问题。
边写代码边讲解基本模型及常用方法,递归模型,字段类型,校验,模型类配置
总结本章的知识点,回顾重难点,下章内容预告
图文列举本章节要讲的内容
首先运行一个简单的 FastAPI 程序,实现返回 "hello world" 的接口;进一步,继承 Pydantic 的 BaseModel 规范请求体数据格式和类型,通过查询参数和请求体传递城市、所在国家、是否有感染病例的信息,讲解 FastAPI 框架的基本开发方法,同步和异步函数的编写、装饰器、URL 路由、HTTP 方法
接着上一小节开发的接口功能,API 交互文档一览,使用方法介绍;另一个可用的 API 交互文档 ReDoc
路径参数的类型,错误检查,自动填充,数据转换、解析、验证(包括数字大小范围的验证),参数别名,API 交互文档中传参演示
讲解查询参数的传参方式,类型转换,多路径参数和查询参数的使用,必填查询参数;模拟一个能选择数据源,查询今日全球 COVID-19 感染数据的接口
用 Pydantic 的 BaseModel 和 Field 类定义请求体数据格式和类型,如何定义多个请求体,请求体和路径参数,查询参数的混合使用;
通过 Python 类的继承,结合 typing 和 Pydantic 的 Field 类,用嵌套的模型类定义数据格式嵌套的请求体
用 FastAPI 的 Cookie 类实现在后端定义 Cookie 的参数,用 Header 类实现在后端定义请求头的参数,请求头参数自动转换功能介绍,请求头参数中重复的 key 如何处理
总结本章的知识点,回顾重难点,下章内容预告
图文列举本章节要讲的内容
响应模型的声明和调用,response_model 指定默认值或响应模型,response_model_exclude_unset、response_model_include和response_model_exclude 参数含义
status_code 参数定义,fastapi.status 快捷调用响应状态码属性
导入 FastAPI 的 Form 类,代码演示如何定义表单参数
讲解 File 和 UploadFile 类,及其参数的定义,多文件上传的实现;以解析 COVID-19.csv 文件数据为例
CSS/JS/IMAGES 静态文件的配置,项目如何找到 Static 文件夹
Path Operation Configuration的概念,包括 Response Status Code、Tags、Summary and description、文档描述符、响应描述、Deprecate 参数
配置 FastAPI 应用的标题、描述、版本,tags 的元数据,自定义 OpenAPI 和文档的 URL
HTTPException 的使用,如何自定义异常处理器;给第六小节开发的 COVID-19 数据查询接口定义异常处理
总结本章的知识点,回顾重难点,下章内容预告
图文列举本章节要讲的内容
依赖的概率,依赖注入系统的作用,有哪些使用场景
代码演示如何创建一个依赖,并在其它函数中调用,讲解 FastAPI 对依赖的处理过程
将前面函数的例子封装成类,举例如何使用类作为依赖项;类型注释与依赖项的区别;依赖类的快捷编写
案例讲解多重(嵌套)依赖的调用,父依赖调用子依赖,子依赖再调用另外的子依赖
如何在路径操作装饰器中添加多个依赖,依赖的错误、返回值、异常处理
讲解 FastAPI 框架中全局依赖的使用
yield 在依赖函数中的作用,讲解数据库连接的案例
总结本章的知识点,回顾重难点,下章内容预告
图文列举本章节要讲的内容
图文讲解 OAuth2.0 认证的概念和基本流程,四种授权模式
OAuth2 密码模式的认证过程, 继承OAuth2PasswordBearer类,使用 OAuth2 的密码模式,在请求头中携带 Authorization: Bearer your_token 实现认证
使用 FastAPI 提供的 OAuth2PasswordBearer 类,开发一个使用密码和 Bear token 的 OAuth2 认证模型,讲解认证原理
JSON Web Tokens介绍,安装 python-jose 和 passlib,实现 JWT 认证,用户登录后才能查询 COVID-19 感染数据;在 API 交互文档中测试实现效果
总结本章的知识点,回顾重难点,下章内容预告
图文列举本章节要讲的内容
SQLAlchemy ORM 介绍,FastAPI 项目中如何配置SQLite数据库,应用的文件结构
开发 COVID-19 的城市和感染数据模型类,讲解模型类中各字段和字段属性
对于上一小节开发的城市和感染数据模型类,继承 pydantic.BaseModel 分别开发对应的创建和读取数据的数据格式类
创建 crud.py 把创建和查询 COVID-19 数据封装成函数,在函数中通过SQLAlchemy ORM实现对SQLite的CRUD操作
调用上一小节的函数,实现创建城市,查询城市信息和各个城市每日感染病例数据的接口
FastAPI 项目中 Jinja2 配置,使用 Jinja2 渲染 COVID-19 查询页面,完成前端页面的开发
对于大型项目,很多的应用应该如何组织目录结构;APIRouter 使不同应用文件更加清晰,便于维护
总结本章的知识点,回顾重难点,下章内容预告
图文列举本章节要讲的内容
中间件的概念,对 request 和 response 的处理流程,需要中间件开发的场景;使用 app.middleware("http") 装饰器创建一个中间件,在响应头中加上对每个 request 处理时间的键值对,演示response前后的处理
域的概念(协议、域名、端口),什么是跨域、跨域资源共享
讲解 FastAPI 的 CORSMiddleware 开发方法,其支持的参数以及含义
后台任务的使用场景,开发一个简单的后台任务,通过函数参数或依赖注入导入后台任务
先说下 COVID-19 全球数据源的问题,对接 https://coronavirus-tracker-api.herokuapp.com 的数据源,后台任务的方式将数据更新到数据表,前端只需要一个点击按钮
用 FastAPI 的 TestClient 编写3个简单的测试用例,测试上一小节的后台任务接口;讲解测试用例的开发思路
总结本章的知识点,回顾重难点
回顾课程内容与重难点,总结经验、心得以及扩展建议。