幫助中心 | 我的帳號 | 關於我們

利用FastAPI構建Python微服務

  • 作者:(美)舍溫·約翰·C.特拉古拉|責編:賈小紅|譯者:王婷
  • 出版社:清華大學
  • ISBN:9787302644866
  • 出版日期:2023/09/01
  • 裝幀:平裝
  • 頁數:361
人民幣:RMB 129 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書詳細闡述了與分散式機器學習相關的基本解決方案,主要包括設置FastAPI,探索核心功能,依賴注入研究,構建微服務應用程序,連接到關係資料庫,使用非關係資料庫,保護REST API的安全,創建協程、事件和消息驅動的事務,利用其他高級功能,解決數值、符號和圖形問題,添加其他微服務功能等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
    本書適合作為高等院校電腦及相關專業的教材和教學參考用書,也可作為相關開發人員的自學用書和參考手冊。

作者介紹
(美)舍溫·約翰·C.特拉古拉|責編:賈小紅|譯者:王婷
    舍溫·約翰·C.特拉古拉(Sherwin John Calleja Tragura)是Java、ASP.NET MVC和Python應用程序方面的主題專家,並且還具有一些前端框架背景。他管理著一個開發團隊來構建與製造和固定資產、文檔管理、記錄管理、POS以及庫存系統相關的各種應用程序。作為顧問,他擁有構建實驗室信息管理系統(laboratory information management system,LIMS)和混合移動應用程序的背景。自2010年以來,他還為Python、Django、Flask、Jakarta EE、C#、ASP.NET MVC、JSF、Java和一些前端框架的課程提供企業新人培訓服務。他撰寫了Spring MVC Blueprints和Spring 5Cookbook之類的書籍,另外還發布了Packt視頻Modern Java Web Applications with Spring Boot 2.x。

目錄
第1篇  與FastAPI微服務開發應用相關的架構概念
  第1章  設置FastAPI
    1.1  技術要求
    1.2  設置開發環境
    1.3  初始化和配置FastAPI
    1.4  設計和實現REST API
    1.5  管理用戶請求和伺服器響應
      1.5.1  參數類型聲明
      1.5.2  路徑參數
      1.5.3  查詢參數
      1.5.4  默認參數
      1.5.5  可選參數
      1.5.6  混合所有類型的參數
      1.5.7  請求正文
      1.5.8  請求標頭
      1.5.9  響應數據
    1.6  處理表單參數
    1.7  管理cookie
    1.8  小結
  第2章  探索核心功能
    2.1  技術要求
    2.2  構建和組織大型項目
      2.2.1  實現API服務
      2.2.2  導入模塊組件
      2.2.3  實現新的main.py文件
    2.3  管理與API相關的異常
      2.3.1  單個狀態代碼響應
      2.3.2  多個狀態代碼
      2.3.3  引發HTTPException
      2.3.4  自定義異常
      2.3.5  默認處理程序覆蓋
    2.4  將對象轉換為與JSON兼容的類型
    2.5  管理API響應
    2.6  創建後台進程
    2.7  使用非同步路徑操作
    2.8  應用中間件以過濾路徑操作
    2.9  小結
  第3章  依賴注入研究
    3.1  技術要求
    3.2  應用控制反轉和依賴注入
      3.2.1  注入依賴函數
      3.2.2  注入可調用的類
      3.2.3  構建嵌套依賴關係
      3.2.4  緩存依賴項
      3.2.5  聲明Depends()參數類型
      3.2.6  注入非同步依賴項
    3.3  探索注入依賴項的方法
      3.3.1  在服務參數列表上發生的依賴注入
      3.3.2  在路徑運算符中發生的依賴注入
      3.3.3  針對路由器的依賴注入

      3.3.4  針對main.py的依賴注入
    3.4  基於依賴關係組織項目
      3.4.1  模型層
      3.4.2  存儲庫層
      3.4.3  存儲庫工廠方法
      3.4.4  服務層
      3.4.5  REST API和服務層
      3.4.6  實際項目結構
    3.5  使用第三方容器
      3.5.1  使用可配置容器—Dependency Injector
      3.5.2  使用Lagom模塊
      3.5.3  FastAPI和Lagom集成
    3.6  可依賴項的範圍
    3.7  小結
  第4章  構建微服務應用程序
    4.1  技術要求
    4.2  應用分解模式
      4.2.1  按業務單元分解
      4.2.2  創建子應用程序
    4.3  掛載子模塊
    4.4  創建通用網關
    4.5  實現主端點
    4.6  評估微服務ID
    4.7  應用異常處理程序
    4.8  集中日誌記錄機制
      4.8.1  微服務架構可能面臨的日誌問題
      4.8.2  使用Loguru模塊
    4.9  構建日誌中間件
      4.9.1  中間件實現示例
      4.9.2  使用REST API服務
    4.10  使用httpx模塊
    4.11  使用requests模塊
    4.12  應用領域建模方法
    4.13  創建層
    4.14  識別領域模型
    4.15  構建存儲庫層和服務層
      4.15.1  存儲庫層模式
      4.15.2  服務層模式
      4.15.3  使用工廠方法模式
    4.16  管理微服務的配置細節
      4.16.1  將設置存儲為類屬性
      4.16.2  在屬性文件中存儲設置
    4.17  小結
第2篇  以數據為中心的微服務和專註于通信的微服務
  第5章  連接到關係資料庫
    5.1  技術要求
    5.2  準備資料庫連接
    5.3  使用SQLAlchemy創建同步CRUD事務
      5.3.1  安裝資料庫驅動程序
      5.3.2  設置資料庫連接

      5.3.3  初始化會話工廠
      5.3.4  定義Base類
      5.3.5  構建模型層
      5.3.6  映射表關係
      5.3.7  實現存儲庫層
      5.3.8  建立CRUD事務
      5.3.9  創建連接查詢
      5.3.10  運行事務
      5.3.11  創建表
    5.4  使用SQLAlchemy實現非同步CRUD事務
      5.4.1  安裝兼容asyncio的資料庫驅動程序
      5.4.2  設置資料庫的連接
      5.4.3  創建會話工廠
      5.4.4  創建Base類和模型層
      5.4.5  構建存儲庫層
      5.4.6  運行CRUD事務
    5.5  使用GINO實現非同步CRUD事務
      5.5.1  安裝資料庫驅動程序
      5.5.2  建立資料庫連接
      5.5.3  構建模型層
      5.5.4  映射表關係
      5.5.5  實現CRUD事務
      5.5.6  運行CRUD事務
      5.5.7  創建表
    5.6  將Pony ORM用於存儲庫層
      5.6.1  安裝資料庫驅動程序
      5.6.2  創建資料庫連接
      5.6.3  定義模型類
      5.6.4  實現CRUD事務
      5.6.5  運行存儲庫事務
      5.6.6  創建表
    5.7  使用Peewee構建存儲庫
      5.7.1  安裝資料庫驅動程序
      5.7.2  創建資料庫連接
      5.7.3  創建表和領域層
      5.7.4  實現CRUD事務
      5.7.5  運行CRUD事務
    5.8  應用CQRS設計模式
      5.8.1  定義處理程序介面
      5.8.2  創建命令和查詢類
      5.8.3  創建命令和查詢處理程序
      5.8.4  訪問處理程序
    5.9  小結
  第6章  使用非關係資料庫
    6.1  技術要求
    6.2  設置資料庫環境
    6.3  應用PyMongo驅動程序進行同步連接
      6.3.1  設置資料庫連接
      6.3.2  構建模型層
      6.3.3  建立文檔關聯

      6.3.4  使用BaseModel類
      6.3.5  使用Pydantic驗證
      6.3.6  使用Pydantic @dataclass查詢文檔
      6.3.7  實現存儲庫層
      6.3.8  構建CRUD事務
      6.3.9  管理文檔關聯
      6.3.10  運行事務
    6.4  使用Motor創建非同步CRUD事務
      6.4.1  設置資料庫連接
      6.4.2  創建模型層
      6.4.3  構建非同步存儲層
      6.4.4  運行CRUD事務
    6.5  使用MongoEngine實現CRUD事務
      6.5.1  建立資料庫連接
      6.5.2  構建模型層
      6.5.3  創建文檔關聯
      6.5.4  應用自定義序列化和反序列化
      6.5.5  實現CRUD事務
      6.5.6  管理嵌入文檔
      6.5.7  運行CRUD事務
    6.6  使用Beanie實現非同步CRUD事務
      6.6.1  創建資料庫連接
      6.6.2  定義模型類
      6.6.3  創建文檔關聯
      6.6.4  實現CRUD事務
      6.6.5  運行存儲庫事務
    6.7  使用ODMantic為FastAPI構建非同步存儲庫
      6.7.1  創建資料庫連接
      6.7.2  創建模型層
      6.7.3  建立文檔關聯
      6.7.4  實現CRUD事務
      6.7.5  運行CRUD事務
    6.8  使用MongoFrames創建CRUD事務
      6.8.1  創建資料庫連接
      6.8.2  構建模型層
      6.8.3  創建文檔關聯
      6.8.4  創建存儲庫層
      6.8.5  應用存儲庫層
    6.9  小結
  第7章  保護REST API的安全
    7.1  技術要求
    7.2  實現Basic和Digest身份驗證
      7.2.1  使用Basic身份驗證
      7.2.2  應用HTTPBasic和HTTPBasicCredentials
      7.2.3  執行登錄事務
      7.2.4  使用Digest身份驗證
      7.2.5  生成哈希憑據
      7.2.6  傳遞用戶憑據
      7.2.7  使用HTTPDigest和HTTPAuthorizationCredentials
      7.2.8  執行登錄事務

    7.3  實現基於密碼的身份驗證
      7.3.1  安裝python-multipart模塊
      7.3.2  使用OAuth2PasswordBearer和OAuth2PasswordRequestForm
      7.3.3  執行登錄事務
      7.3.4  保護端點的安全
    7.4  應用JWT
      7.4.1  生成密鑰
      7.4.2  創建access_token
      7.4.3  創建登錄事務
      7.4.4  訪問安全端點
    7.5  創建基於作用域的授權
      7.5.1  自定義OAuth2類
      7.5.2  構建許可權字典
      7.5.3  實現登錄事務
      7.5.4  將作用域應用於端點
    7.6  構建授權碼流
      7.6.1  應用OAuth2AuthorizationCodeBearer
      7.6.2  實現授權請求
      7.6.3  實現授權碼響應
    7.7  應用OpenID Connect規範
      7.7.1  使用HTTPBearer
      7.7.2  安裝和配置Keycloak環境
      7.7.3  設置Keycloak領域和客戶端
      7.7.4  創建用戶和用戶角色
      7.7.5  為客戶端分配角色
      7.7.6  通過作用域創建用戶許可權
      7.7.7  將Keycloak與FastAPI集成在一起
      7.7.8  實現令牌驗證
      7.7.9  將Auth0與FastAPI集成在一起
      7.7.10  將Okta與FastAPI集成在一起
    7.8  使用內置中間件進行身份驗證
    7.9  小結
  第8章  創建協程、事件和消息驅動的事務
    8.1  技術要求
    8.2  實現協程
      8.2.1  應用協程切換
      8.2.2  應用@asyncio.coroutine
      8.2.3  使用async/await結構
      8.2.4  設計非同步事務
      8.2.5  使用HTTP/2協議
    8.3  創建非同步後台任務
      8.3.1  使用協程
      8.3.2  創建多個任務
    8.4  了解Celery任務
      8.4.1  創建和配置Celery實例
      8.4.2  創建任務
      8.4.3  調用任務
      8.4.4  啟動工作伺服器
      8.4.5  監控任務
    8.5  使用RabbitMQ構建消息驅動的事務

      8.5.1  創建Celery實例
      8.5.2  監控AMQP消息傳遞
    8.6  使用Kafka構建發布/訂閱消息
      8.6.1  運行Kafka代理和伺服器
      8.6.2  創建主題
      8.6.3  實現發布者
      8.6.4  在控制台上運行使用者
    8.7  實現非同步伺服器發送事件
    8.8  構建非同步WebSocket
      8.8.1  實現非同步WebSocket端點
      8.8.2  實現WebSocket客戶端
    8.9  在任務中應用反應式編程
      8.9.1  使用協程創建Observable數據
      8.9.2  創建後台進程
      8.9.3  訪問API資源
    8.10  自定義事件
      8.10.1  定義啟動事件
      8.10.2  定義關閉事件
    8.11  小結
第3篇  與基礎設施相關的問題、數字和符號計算、測試微服務
  第9章  利用其他高級功能
    9.1  技術要求
    9.2  應用會話管理
      9.2.1  創建用戶會話
      9.2.2  管理會話數據
      9.2.3  刪除會話
      9.2.4  自定義BaseHTTPMiddleware
    9.3  管理CORS機制
    9.4  自定義APIRoute和Request
      9.4.1  管理數據正文、表單或JSON數據
      9.4.2  加密和解密消息正文
    9.5  選擇適當的響應
      9.5.1  設置Jinja2模板引擎
      9.5.2  設置靜態資源
      9.5.3  創建模板布局
      9.5.4  使用ORJSONResponse和UJSONResponse
    9.6  應用OpenAPI 3.x規範
      9.6.1  擴展OpenAPI模式定義
      9.6.2  使用內部代碼庫屬性
      9.6.3  使用Query、Form、Body和Path函數
    9.7  測試API端點
      9.7.1  編寫單元測試用例
      9.7.2  模擬依賴項
      9.7.3  運行測試方法
    9.8  小結
  第10章  解決數值、符號和圖形問題
    10.1  技術要求
    10.2  設置項目
      10.2.1  使用Piccolo ORM
      10.2.2  創建數據模型

      10.2.3  實現存儲層
      10.2.4  Beanie ODM
    10.3  實現符號計算
      10.3.1  創建符號表達式
      10.3.2  求解線性表達式
      10.3.3  求解非線性表達式
      10.3.4  求解線性和非線性不等式
    10.4  創建數組和DataFrame
      10.4.1  應用NumPy的線性系統操作
      10.4.2  應用pandas模塊
    10.5  執行統計分析
    10.6  生成CSV和XLSX報告
    10.7  繪製數據模型
    10.8  模擬BPMN工作流
      10.8.1  設計BPMN工作流
      10.8.2  實現工作流
    10.9  使用GraphQL查詢和突變
      10.9.1  設置GraphQL平台
      10.9.2  創建記錄的插入、更新和刪除
      10.9.3  實現查詢事務
      10.9.4  運行CRUD事務
    10.10  利用Neo4j圖資料庫
      10.10.1  設置Neo4j資料庫
      10.10.2  創建CRUD事務
    10.11  小結
  第11章  添加其他微服務功能
    11.1  技術要求
    11.2  設置虛擬環境
    11.3  檢查API屬性
    11.4  實現OpenTracing機制
    11.5  設置服務註冊表和客戶端服務發現
      11.5.1  實現客戶端服務發現
      11.5.2  設置Netflix Eureka服務註冊表
    11.6  使用Docker部署和運行應用程序
      11.6.1  生成requirements.txt文件
      11.6.2  創建Docker鏡像
      11.6.3  使用Mongo Docker鏡像
      11.6.4  創建容器
    11.7  使用Docker Compose進行部署
    11.8  使用NGINX作為API網關
    11.9  集成Flask和Django子應用程序
    11.10  小結

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032