Rust Web開發

Rust Web開發

《Rust Web開發》是一本清華大學出版社出版的圖書,作者是[德] 巴斯蒂安·格魯伯(Bastian Gruber)譯者是趙永、鄒松廷、盧賢潑。

基本介紹

  • 中文名:Rust Web開發
  • 作者:[德] 巴斯蒂安·格魯伯
  • 出版時間:2024年4月1日
  • 出版社:清華大學出版社
  • ISBN:9787302658238
內容簡介,圖書目錄,作者簡介,

內容簡介

  如果你厭倦了緩慢、占用大量資源且不穩定的模板化Web開發工具,Rust就是你的解決方案。Rust服務提供了穩定的安全保證、非凡的開發經驗,以及能夠自動防止常見錯誤的編譯器。
  《Rust Web開發》教你使用Rust以及重要的Rust庫(如異步運行時的Tokio、用於Web伺服器和API的Warp,以及運行外部HTTP請求的Reqwest)來創建服務端的Web套用。《Rust Web開發》包含大量的代碼示例以及專業的提示,以幫助你創建項目和組織代碼。隨著學習的深入,你將創建一個完整的Q&A Web服務並逐章疊代你的代碼,就像參與了真實的項目開發一樣。
主要內容
● 在異步環境中處理借用檢查器
● 創建Web API並處理JSON
● 組建一個用於Rust異步開發的技術棧
● 優雅地處理錯誤
● 測試、追蹤、記錄和調試
● 在多個環境中部署Rust套用

圖書目錄

第Ⅰ部分 Rust介紹
第1章 為什麼使用Rust 3
1.1 開箱即用:Rust提供的工具 4
1.2 Rust編譯器 8
1.3 Rust用於Web服務 10
1.4 Rust應用程式的可維護性 15
1.5 本章小結 15
第2章 建立基礎 17
2.1 遵循Rust規範 18
2.1.1 使用結構體對資源進行建模 19
2.1.2 理解Option 21
2.1.3 使用文檔解決錯誤 22
2.1.4 在Rust中處理字元串 27
2.1.5 深入理解移動、借用和所有權 28
2.1.6 使用和實現trait 31
2.1.7 處理結果 39
2.2 創建Web伺服器 40
2.2.1 同時處理多個請求 41
2.2.2 Rust的異步環境 42
2.2.3 Rust處理async/await 43
2.2.4 使用Rust Future類型 44
2.2.5 選擇運行時 45
2.2.6 選擇Web框架 46
2.3 本章小結 49
第Ⅱ部分 開始
第3章 創建第一個路由函式 53
3.1 認識Web框架:Warp 54
3.1.1 Warp包括哪些內容 54
3.1.2 Warp的過濾器系統 55
3.2 獲取第一個JSON回響 56
3.2.1 與你的框架理念保持一致 57
3.2.2 處理正確的路由 58
3.2.3 使用Serde庫 59
3.2.4 優雅地處理錯誤 61
3.3 處理CORS頭信息 65
3.3.1 在套用層面返回CORS頭信息 66
3.3.2 測試CORS回響 67
3.4 本章小結 70
第4章 實現具象狀態傳輸API 73
4.1 從記憶體中獲取問題 74
4.1.1 設定一個模擬資料庫 75
4.1.2 準備一組測試數據 78
4.1.3 從模擬資料庫中讀取 80
4.1.4 解析查詢參數 84
4.1.5 返回自定義錯誤 88
4.2 創建、更新和刪除問題 92
4.2.1 線上程安全的情況下更新數據 92
4.2.2 添加一個問題 96
4.2.3 更新問題 98
4.2.4 處理錯誤的請求 100
4.2.5 從存儲中刪除問題 101
4.3 通過url表單創建問題 103
4.3.1 url表單和JSON的區別 104
4.3.2 通過url表單添加答案 104
4.4 本章小結 107
第5章 清理代碼庫 109
5.1 將代碼模組化 109
5.1.1 使用Rust的內置模組系統 110
5.1.2 針對不同用例的資料夾結構 116
5.1.3 創建庫和sub-crate 120
5.2 為代碼創建檔案 124
5.2.1 使用文檔注釋和私有注釋 124
5.2.2 在注釋中添加代碼 126
5.3 檢測和格式化代碼庫 128
5.3.1 安裝和使用Clippy 128
5.3.2 使用Rustfmt格式化代碼 131
5.4 本章小結 132
第6章 記錄、追蹤和調試 133
6.1 在Rust套用中記錄日誌 134
6.1.1 在Web服務中實現日誌記錄 136
6.1.2 記錄HTTP請求日誌 142
6.1.3 創建結構化的日誌 145
6.2 異步套用中的追蹤 152
6.2.1 引入Tracing crate 153
6.2.2 集成Tracing到套用 154
6.3 調試Rust套用 158
6.3.1 在命令行上使用GDB 159
6.3.2 使用LLDB調試Web服務 160
6.3.3 使用Visual Studio和LLDB 162
6.4 本章小結 165
第7章 為套用添加資料庫 167
7.1 設定示例資料庫 168
7.2 創建第一個表 168
7.3 使用資料庫crate 171
7.3.1 將SQLx添加到項目中 173
7.3.2 將Store連線到資料庫 174
7.4 重新實現路由函式 177
7.4.1 在get_questions中添加資料庫 178
7.4.2 重新實現add_question路由函式 185
7.4.3 問題處理函式的更新和刪除 187
7.4.4 更新add_answer路由 190
7.5 處理錯誤和追蹤資料庫互動 192
7.6 集成SQL遷移 198
7.7 案例研究:切換資料庫管理系統 201
7.8 本章小結 204
第8章 集成第三方API 205
8.1 準備代碼庫 207
8.1.1 選擇一個API 208
8.1.2 了解HTTP庫 209
8.1.3 添加一個使用Reqwest的HTTP調用示例 211
8.1.4 處理外部API請求的錯誤 213
8.2 將JSON回響反序列化為結構體 219
8.2.1 收集API回響信息 220
8.2.2 為API回響創建類型 221
8.3 向API傳送問題和答案 226
8.3.1 重構add_question路由函式 226
8.3.2 進行敏感詞檢查以更新問題 229
8.3.3 更新add_answer路由函式 230
8.4 處理逾時和同時發生的多個請求 231
8.4.1 實現外部HTTP調用的重試機制 232
8.4.2 並發或並行執行future 236
8.5 本章小結 238
第Ⅲ部分 投入生產
第9章 添加認證和授權 241
9.1 為Web服務添加認證 243
9.1.1 創建用戶概念 243
9.1.2 遷移資料庫 245
9.1.3 添加註冊端點 247
9.1.4 對密碼進行哈希處理 250
9.1.5 處理重複賬戶錯誤 252
9.1.6 有狀態認證與無狀態認證 258
9.1.7 添加登錄端點 259
9.1.8 為令牌添加有效期 263
9.2 添加授權中間件 265
9.2.1 遷移資料庫表 265
9.2.2 創建令牌驗證中間件 266
9.2.3 擴展現有路由以處理賬戶ID 270
9.3 未涵蓋的內容 275
9.4 本章小結 276
第10章 部署應用程式 277
10.1 通過環境變數設定應用程式 277
10.1.1 設定配置檔案 279
10.1.2 在程式中接收命令行參數 281
10.1.3 在Web服務中讀取和解析環境變數 283
10.2 根據不同環境編譯Web服務 288
10.2.1 構建二進制檔案時的development和release標誌 289
10.2.2 針對不同環境交叉編譯二進制檔案 290
10.3 在構建流程中使用build.rs 291
10.4 創建正確的Web服務Docker鏡像 294
10.4.1 創建靜態連結的Docker鏡像 295
10.4.2 使用docker-compose建立本地Docker環境 296
10.4.3 將Web伺服器的配置提取到一個新模組中 299
10.5 本章小結 303
第11章 測試Rust應用程式 305
11.1 業務邏輯的單元測試 306
11.1.1 測試分頁邏輯和處理自定義錯誤 307
11.1.2 使用環境變數測試配置模組 310
11.1.3 使用新創建的模擬伺服器測試profanity模組 314
11.2 測試Warp過濾器 321
11.3 創建集成測試配置 325
11.3.1 將代碼庫拆分為lib.rs和二進制檔案 327
11.3.2 創建集成測試crate和單發伺服器實現 330
11.3.3 添加註冊測試 332
11.3.4 發生錯誤時進行堆疊展開 336
11.3.5 測試登錄和發布問題 337
11.4 本章小結 339
附錄 關於安全的思考 341

作者簡介

巴斯蒂安·格魯伯(Bastian Gruber)是Centrifuge的協定工程師。他曾經是Rust官方異步工作組的一員,並創建了Rust and Tell Berlin MeetUp小組。

相關詞條

熱門詞條

聯絡我們