欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • FastAPI学习手册
      • 作者:(美)比尔·卢巴诺维奇|责编:刘炽|译者:爱飞翔
      • 出版社:中国电力
      • ISBN:9787519899585
      • 出版日期:2025/06/01
      • 页数:339
    • 售价:39.2
  • 内容大纲

        FastAPI是个年轻而稳健的框架,它设计得相当清晰,并且利用了Python语言中的一些新特性。正如其名称所示,这个框架的速度确实快,能够与采用Go语言所编写的框架相争。熟悉Python语言的开发者能够通过这本实用教程,学到如何运用FastAPI框架,以尽可能少的代码迅速开发出Web应用。
        本书作者描述了FastAPI开发中的诸多细节,并通过各种示例,讲解了表单、数据库访问、图表与地图制作等高级话题。这本书能够帮助你迅速了解RESTful API、数据验证、授权,以及性能优化等技术。FastAPI与Flask及Django框架类似,用过那两种框架的读者很容易就能学会FastAPI。
  • 作者介绍

        比尔·卢巴诺维奇(Bill Lubanovic),在长达40余年的软件开发生涯中积累了丰富的实战经验、开发过的项目跨越数据库、Web、分布式系统等多个领域。他曾负责用Python重新实现流行工具Wayback Machine。     1982-1988年(Intran):在首个商业图形工作站上开发了MetaForm。     1990-1995年(西北航空公司):编写了一个图形化收益管理系统,使航空公司迈入互联网并编写了其第一个互联网营销测试。     1994年(Tela):与他人共同创立了一家早期的ISP。     1995-1999年(WAM! NET):开发了Web仪表盘和3M数字媒体仓库。     1999-2005年(Mad Scheme):与他人共同创立了一家Web开发/托管公司。     2005年(O'Reilly):撰写了Linux Server Security一书的部分内容。     2007年(O'Reilly):与人合著了Linux System Administration。     2010-2013年(Keep):设计并建立了Web前端和数据库后端之间的核心服务。     2014年(O'Reilly):撰写了本书的第1版。     2015-2016年(Internet Archive):从事API和Python版本的Wayback Machine工作。     2016-2018年(CrowdStrike):管理基于Python的服务,每天处理数十亿次安全事件。比尔目前在明尼苏达州的桑格瑞-德-萨斯卡奇山脉(Sangre de Sasquatch mountains)与妻子Mary、儿子Tome(和妻子Roxie)、女儿Karin(和丈夫Erik),以及猫咪Inga、Chester和Lucy共享幸福的家庭生活。
  • 目录

    前言
    第一部分 新知识介绍
      第1章 当代的Web
        1.1 预览
        1.2 服务与API
          1.2.1 API的类型
          1.2.2 HTTP
          1.2.3 REST(RESTful)
          1.2.4 JSON与API数据格式
          1.2.5 JSON:API
          1.2.6 GraphQL
        1.3 并发
        1.4 分层
        1.5 数据
        1.6 小结
      第2章 当代的Python
        2.1 预览
        2.2 工具
        2.3 Python入门
          2.3.1 Python语言本身
          2.3.2 Python语言的软件包管理机制
          2.3.3 虚拟环境
          2.3.4 Poetry
          2.3.5 源代码的格式
          2.3.6 测试
          2.3.7 源代码控制与持续集成
          2.3.8 Web开发工具
        2.4 API与服务
        2.5 变量只不过是个名字
        2.6 类型提示
        2.7 数据结构
        2.8 Web框架
          2.8.1 Django
          2.8.2 Flask
          2.8.3 FastAPI
        2.9 小结
    第二部分 FastAPI导览
      第3章 FastAPI简介
        3.1 预览
        3.2 什么是FastAPI
        3.3 FastAPI应用程序
        3.4 处理HTTP请求
          3.4.1 通过URL路径传递参数
          3.4.2 通过查询字符串传递参数
          3.4.3 通过请求体传递参数
          3.4.4 通过Header传递参数
          3.4.5 通过多种方式获取HTTP请求之中的数据
          3.4.6 用哪一种方式获取数据最好
        3.5 给出HTTP响应
          3.5.1 状态码

          3.5.2 Header
          3.5.3 HTTP响应的类型
          3.5.4 类型转换
          3.5.5 通过response_model返回另一种数据模型
        3.6 自动化的文档
        3.7 如何处理更为复杂的数据
        3.8 小结
      第4章 异步、并发与Starlette简介
        4.1 预览
        4.2 Starlette
        4.3 并发的类型
          4.3.1 分布式计算与并行计算
          4.3.2 操作系统级别的进程
          4.3.3 操作系统级别的线程
          4.3.4 绿色线程
          4.3.5 回调
          4.3.6 Python生成器
          4.3.7 Python的async、await关键字与asyncio库
        4.4 FastAPI与异步开发
        4.5 直接使用Starlette做Web开发
        4.6 插曲:清理Clue House
        4.7 小结
      第5章 Pydantic、类型提示与数据模型简介
        5.1 预览
        5.2 类型提示
        5.3 给数据归组
        5.4 其他一些数据归组方案
        5.5 一个简单的示例
        5.6 对类型做验证
        5.7 对取值做出验证
        5.8 小结
      第6章 描述依赖关系
        6.1 预览
        6.2 什么是依赖
        6.3 由依赖导致的问题
        6.4 依赖注入
        6.5 FastAPI的依赖注入
        6.6 在FastAPI代码里面描述依赖关系
        6.7 依赖关系的作用范围
          6.7.1 为单个的路径函数指定依赖关系
          6.7.2 为多条路径指定同一种依赖关系
          6.7.3 为整个应用程序指定依赖关系
        6.8 小结
      第7章 各种Web框架之间的对比
        7.1 预览
        7.2 Flask与FastAPI的异同
          7.2.1 处理URL之中的参数
          7.2.2 处理查询字符串之中的参数
          7.2.3 处理请求体之中的参数
          7.2.4 处理标头之中的参数

        7.3 Django框架与Flask及FastAPI的异同
        7.4 这三种Web开发框架在其他方面的特性对比
        7.5 这三个框架在数据库方面的异同
        7.6 如何在这三种框架之间选择
        7.7 其他一些Python Web框架
        7.8 小结
    第三部分 制作网站
      第8章 Web层
        8.1 预览
        8.2 插曲:从上到下、从下到上,还是从内到外
        8.3 REST式的设计
        8.4 网站的文件与目录布局
        8.5 网站的第一版代码
        8.6 处理HTTP请求
        8.7 在顶级app下面添加多个次一级的subrouter
        8.8 构建Web层
        8.9 定义数据模型
        8.10 Stub Data与Fake Data
        8.11 先确定一些常见的操作
        8.12 建立Fake Data
        8.13 开始测试
        8.14 利用FastAPI自动生成的测试表单作测试
        8.15 Web层应该通过Service层做中介,而不应直接与Data层通信
        8.16 分页与排序
        8.17 小结
      第9章 Service层
        9.1 预览
        9.2 如何确定网站所应提供的服务
        9.3 网站的文件布局
        9.4 确保网站安全
        9.5 实现Service层中的各种函数
        9.6 测试
        9.7 Service层的其他事务
          9.7.1 日志记录
          9.7.2 指标测量、监控、可观测性
          9.7.3 追踪
          9.7.4 杂项
        9.8 小结
      第10章 Data层
        10.1 预览
        10.2 DB-API
        10.3 SQLite
        10.4 网站的文件布局
        10.5 让网站运作起来
        10.6 测试
          10.6.1 全面测试
          10.6.2 单元测试
        10.7 小结
      第11章 认证与授权
        11.1 预览

        11.2 又得跑个题:我们真的需要做认证吗
        11.3 认证方式
        11.4 全局认证:让所有人共用密语
        11.5 对每一位访问者分别做认证
        11.6 采用新式技术给每一位访问者分别做认证
          11.6.1 OAuth2
          11.6.2 表示用户的User模型
          11.6.3 实现Data层中与User有关的操作
          11.6.4 实现一套与Data层中的User操作类似的Fake操作
          11.6.5 实现Service层中与User有关的操作
          11.6.6 实现Web层中与User有关的操作
          11.6.7 测试
          11.6.8 修改顶层的主程序
          11.6.9 回顾早前实现的认证步骤
          11.6.10 JWT
          11.6.11 经由OIDC协议,通过第三方账号做认证
        11.7 授权
        11.8 中间件
          11.8.1 CORS(跨域资源共享)
          11.8.2 通过第三方包实现认证与授权
        11.9 小结
      第12章 测试
        12.1 预览
        12.2 对Web API做测试
        12.3 对哪里的代码做测试
        12.4 如何做测试
        12.5 Pytest
        12.6 网站的文件布局
        12.7 自动化的单元测试
          12.7.1 Mocking
          12.7.2 Test Double与Fake
          12.7.3 对Web层做测试
          12.7.4 对Service层做测试
          12.7.5 对Data层做测试
        12.8 自动化的集成测试
        12.9 Repository模式
        12.10 自动化的全面测试
        12.11 安全测试
        12.12 负载测试
        12.13 小结
      第13章 将网站部署到生产环境之中
        13.1 预览
        13.2 部署网站
          13.2.1 采用多个Worker来运行服务器
          13.2.2 HTTPS
          13.2.3 Docker
          13.2.4 云服务
          13.2.5 Kubernetes
        13.3 改善网站的性能
          13.3.1 Async

          13.3.2 缓存
          13.3.3 数据库、文件、内存
          13.3.4 队列
          13.3.5 Python本身
        13.4 疑难排解
          13.4.1 确定这是哪一类问题
          13.4.2 查看日志
          13.4.3 收集指标
        13.5 小结
    第四部分 漫谈
      第14章 数据库、数据科学以及一点点AI
        14.1 预览
        14.2 数据存储方案
        14.3 关系型数据库及SQL
          14.3.1 SQLAlchemy
          14.3.2 SQLModel
          14.3.3 SQLite
          14.3.4 PostgreSQL
          14.3.5 EdgeDB
        14.4 非关系型数据库(NoSQL数据库)
          14.4.1 Redis
          14.4.2 MongoDB
          14.4.3 Cassandra
          14.4.4 Elasticsearch
        14.5 SQL数据库中的NoSQL特性
        14.6 数据库负载测试
        14.7 数据科学与人工智能(AI)
        14.8 小结
      第15章 文件
        15.1 预览
        15.2 如何支持分块传输
        15.3 上传文件
          15.3.1 通过File()实现文件上传
          15.3.2 通过UploadFile实现文件上传
        15.4 下载文件
          15.4.1 FileResponse
          15.4.2 StreamingResponse
        15.5 提供静态文件服务
        15.6 小结
      第16章 表单与模板
        16.1 预览
        16.2 表单
        16.3 模板
        16.4 小结
      第17章 数据发现与数据可视化
        17.1 预览
        17.2 Python与数据处理
        17.3 读取并输出PSV格式的文本数据
          17.3.1 用csv包读取PSV文件
          17.3.2 用python-tabulate包读取PSV文件

          17.3.3 用pandas读取PSV文件并输出其内容
        17.4 读取SQLite数据库中的数据并以网页的形式显示
          17.4.1 与图表显示有关的软件包
          17.4.2 图表示例1:试用Plotly
          17.4.3 图表示例2:绘制直方图
          17.4.4 与地图显示有关的软件包
          17.4.5 地图示例
        17.5 小结
      第18章 游戏
        18.1 预览
        18.2 与游戏制作有关的Python包
        18.3 拆分游戏逻辑
        18.4 游戏的设计
        18.5 Web层的第一部分工作:实现游戏的初始化
        18.6 Web层的第二部分工作:实现游戏的后续步骤
        18.7 Service层的第一部分工作:实现游戏的初始化
        18.8 Service层的第二部分工作:判断玩家猜测得是否正确
        18.9 测试
        18.10 Data层的工作:实现游戏的初始化
        18.11 开始玩这个猜单词游戏
        18.12 小结
    附录A 延伸阅读
    附录B 用作示例数据的神秘生物及探索者