編輯推薦
Go語言通過提供整潔快速的編譯代碼、垃圾迴收、簡單的並發Go模型以及豐富的標準庫來滿足人們對於可擴展、高性能Web 應用的需求,這種語言非常適用於編寫微服務,又或者用於構建可擴展且可維護的係統。
本書將教讀者運用現代化設計理念構建Go Web應用的方法。閱讀本書能讓讀者學會如何通過依賴注入設計模式來編寫測試替身,如何在Web應用中使用並發特性,還有如何在Web服務中創建以及處理JSON數據和XML數據。除此之外,讀者還將學會如何盡可能地減少應用對外部框架的依賴,並瞭解大量與應用測試以及應用部署有關的有價值的生産技術。
本書主要內容
● 基礎知識。
● 功能測試和基準測試。
● 並發特性的使用方法。
● 將應用部署到獨立服務器、PaaS雲端以及 Docker 的方法。
● 大量提示、竅門以及技巧。
本書假設讀者熟悉Go語言的基本語法並瞭解Web 開發的一般概念。
內容簡介
本書全麵介紹使用Go語言開發Web應用所需的全部基本概念,並詳細講解如何運用現代設計原則使用Go語言構建Web應用。本書通過大量的實例介紹核心概念(如處理請求和發送響應、模闆引擎和數據持久化),並深入討論更多高級主題(如並發、Web應用程序測試以及部署到標準係統服務器和PaaS提供商)。
本書以一個網絡論壇為例,講解如何使用請求處理器、多路復用器、模闆引擎、存儲係統等核心組件構建一個Go Web應用,然後在這一應用的基礎上,構建齣相應的Web服務。值得一提的是,本書在介紹Go Web開發方法時,基本上隻用到Go語言自帶的標準庫,而不會用到任何特定的Web框架,讀者學到的知識將不會局限於特定的框架,即使將來需要用到現成的框架或者自行構建框架,仍然會從本書中獲益。本書除瞭講解具體的Web開發方法,還介紹如何對Go Web應用進行測試,如何使用Go的並發特性提高Web應用的性能,以及如何在Heroku、Google App Engine、Digital Ocean等雲平颱上部署Go Web應用;此外,書中還傳授一些Go Web開發方麵的經驗和提示。這些重要的實踐知識將幫助讀者快速成為真正具有生産力的Go Web開發者。
閱讀本書需要讀者具備基本的Go語言編程技能並掌握Go語言的語法。本書適閤所有想用Go語言進行Web開發的讀者閱讀,無論是Web開發的初學者還是入行已久的開發者都會在閱讀本書的過程中有所收獲。
作者簡介
作者簡介
Sau Sheong Chang 既是新加坡能源有限公司的數字技術總裁,也是Ruby 社區以及Go社區的活躍貢獻者,著有《Go Web編程》《R和Ruby數據分析之旅》等4 部著作。
譯者簡介
黃健宏(huangz),一位1990年齣生的計算機技術圖書作譯者,《Redis設計與實現》一書的作者,《Redis實戰》一書的譯者。除瞭已齣版的兩本作品之外,他還創作和翻譯瞭《Go標準庫中文文檔》《Redis命令參考》《SICP解題集》等一係列開源文檔。要瞭解關於黃健宏的更多信息,請訪問他的個人主頁http://huangz.me。
目錄
第一部分 Go與Web應用
第1章 Go與Web應用 3
1.1 使用Go語言構建Web應用 3
1.1.1 Go與可擴展Web應用 4
1.1.2 Go與模塊化Web應用 4
1.1.3 Go與可維護的Web應用 5
1.1.4 Go與高性能Web應用 5
1.2 Web應用的工作原理 6
1.3 HTTP簡介 7
1.4 Web應用的誕生 8
1.5 HTTP請求 9
1.5.1 請求方法 10
1.5.2 安全的請求方法 11
1.5.3 冪等的請求方法 11
1.5.4 瀏覽器對請求方法的支持 11
1.5.5 請求首部 12
1.6 HTTP響應 13
1.6.1 響應狀態碼 13
1.6.2 響應首部 14
1.7 URI 15
1.8 HTTP/2簡介 16
1.9 Web應用的各個組成部分 16
1.9.1 處理器 17
1.9.2 模闆引擎 18
1.10 Hello Go 18
1.11 小結 21
第2章 ChitChat論壇 23
2.1 ChitChat簡介 23
2.2 應用設計 24
2.3 數據模型 26
2.4 請求的接收與處理 27
2.4.1 多路復用器 27
2.4.2 服務靜態文件 29
2.4.3 創建處理器函數 29
2.4.4 使用cookie進行訪問控製 30
2.5 使用模闆生成HTML響應 33
2.6 安裝PostgreSQL 38
2.6.1 在Linux或FreeBSD係統上安裝 38
2.6.2 在Mac OS X係統上安裝 39
2.6.3 在Windows係統上安裝 39
2.7 連接數據庫 39
2.8 啓動服務器 44
2.9 Web應用運作流程迴顧 45
2.10 小結 46
第二部分 Web應用的基本組成部分
第3章 接收請求 49
3.1 Go的net/http標準庫 49
3.2 使用Go構建服務器 51
3.2.1 Go Web服務器 51
3.2.2 通過HTTPS提供服務 53
3.3 處理器和處理器函數 56
3.3.1 處理請求 56
3.3.2 使用多個處理器 58
3.3.3 處理器函數 59
3.3.4 串聯多個處理器和處理器函數 61
3.3.5 ServeMux和DefaultServeMux 65
3.3.6 使用其他多路復用器 66
3.4 使用HTTP/2 68
3.5 小結 70
第4章 處理請求 72
4.1 請求和響應 72
4.1.1 Request結構 73
4.1.2 請求URL 73
4.1.3 請求首部 74
4.1.4 請求主體 76
4.2 Go與HTML錶單 77
4.2.1 Form字段 79
4.2.2 PostForm字段 80
4.2.3 MultipartForm字段 81
4.2.4 文件 83
4.2.5 處理帶有JSON主體的POST請求 85
4.3 ResponseWriter 86
4.4 cookie 91
4.4.1 Go與cookie 91
4.4.2 將cookie發送至瀏覽器 92
4.4.3 從瀏覽器裏麵獲取cookie 94
4.4.4 使用cookie實現閃現消息 96
4.5 小結 99
第5章 內容展示 100
5.1 模闆引擎 100
5.2 Go的模闆引擎 102
5.2.1 對模闆進行語法分析 104
5.2.2 執行模闆 105
5.3 動作 106
5.3.1 條件動作 106
5.3.2 迭代動作 108
5.3.3 設置動作 109
5.3.4 包含動作 111
5.4 參數、變量和管道 113
5.5 函數 114
5.6 上下文感知 116
5.6.1 防禦XSS攻擊 119
5.6.2 不對HTML進行轉義 121
5.7 嵌套模闆 122
5.8 通過塊動作定義默認模闆 126
5.9 小結 127
第6章 存儲數據 128
6.1 內存存儲 128
6.2 文件存儲 131
6.2.1 讀取和寫入CSV文件 133
6.2.2 gob包 135
6.3 Go與SQL 137
6.3.1 設置數據庫 138
6.3.2 連接數據庫 140
6.3.3 創建帖子 142
6.3.4 獲取帖子 144
6.3.5 更新帖子 145
6.3.6 刪除帖子 145
6.3.7 一次獲取多篇帖子 146
6.4 Go與SQL的關係 147
6.4.1 設置數據庫 147
6.4.2 一對多關係 150
6.5 Go與關係映射器 152
6.5.1 Sqlx 152
6.5.2 Gorm 154
6.6 小結 157
第三部分 實戰演練
第7章 Go Web服務 161
7.1 Web服務簡介 161
7.2 基於SOAP的Web服務簡介 163
7.3 基於REST的Web服務簡介 166
7.3.1 將動作轉換為資源 168
7.3.2 將動作轉換為資源的屬性 169
7.4 通過Go分析和創建XML 169
7.4.1 分析XML 169
7.4.2 創建XML 177
7.5 通過Go分析和創建JSON 180
7.5.1 分析JSON 181
7.5.2 創建JSON 184
7.6 創建Go Web服務 187
7.7 小結 194
第8章 應用測試 196
8.1 Go與測試 196
8.2 使用Go進行單元測試 197
8.2.1 跳過測試用例 201
8.2.2 以並行方式運行測試 202
8.2.3 基準測試 203
8.3 使用Go進行HTTP測試 206
8.4 測試替身以及依賴注入 210
8.5 第三方Go測試庫 217
8.5.1 Gocheck測試包簡介 217
8.5.2 Ginkgo測試框架簡介 223
8.6 小結 228
第9章 發揮Go的並發優勢 230
9.1 並發與並行的區彆 230
9.2 goroutine 232
9.2.1 使用goroutine 232
9.2.2 goroutine與性能 235
9.2.3 等待goroutine 238
9.3 通道 239
9.3.1 通過通道實現同步 240
9.3.2 通過通道實現消息傳遞 242
9.3.3 有緩衝通道 243
9.3.4 從多個通道中選擇 244
9.4 在Web應用中使用並發 247
9.4.1 創建馬賽剋圖片 248
9.4.2 馬賽剋圖片Web應用 251
9.4.3 並發版馬賽剋圖片生成Web應用 254
9.5 小結 262
第10章 Go的部署 263
10.1 將應用部署到獨立的 服務器 264
10.2 將應用部署到 Heroku 270
10.3 將應用部署到Google App Engine 273
10.4 將應用部署到 Docker 278
10.4.1 什麼是Docker 278
10.4.2 安裝Docker 279
10.4.3 Docker的理念與 組件 280
10.4.4 Docker化一個Go Web 應用 281
10.4.5 將Docker容器推送至 互聯網 283
10.5 部署方法之間的 對比 286
10.6 小結 287
附錄 安裝和設置Go 288
Go Web編程 下載 mobi epub pdf txt 電子書 格式