第1章 編寫命令行應用程序 1
1.1 我們的第一個應用程序 1
1.2 編寫單元測試 8
1.3 使用flag包 14
1.4 改進用戶界面 22
1.4.1 刪除重復的錯誤消息 22
1.4.2 自定義用例消息 23
1.4.3 通過位置參數(shù)接收姓名 24
1.5 更新單元測試 27
1.6 小結 32
第2章 高級命令行應用程序 33
2.1 實現(xiàn)子命令 33
2.1.1 子命令驅動的應用程序架構 37
2.1.2 測試main包 43
2.1.3 測試cmd包 45
2.2 使應用程序更健壯 47
2.2.1 帶有超時的用戶輸入 48
2.2.2 處理用戶信號 51
2.3 小結 55
第3章 編寫HTTP客戶端 57
3.1 下載數(shù)據 57
3.2 反序列化接收到的數(shù)據 61
3.3 發(fā)送數(shù)據 65
3.4 使用二進制數(shù)據 71
3.5 小結 78
第4章 高級HTTP客戶端 79
4.1 使用自定義HTTP客戶端 79
4.1.1 從過載的服務器下載 79
4.1.2 測試超時行為 83
4.1.3 配置重定向行為 86
4.2 定制請求 89
4.3 實現(xiàn)客戶端中間件 90
4.3.1 了解RoundTripper接口 90
4.3.2 日志中間件 91
4.3.3 給所有請求添加一個標頭 94
4.4 連接池 97
4.5 小結 101
第5章 構建HTTP服務器 103
5.1 我們的第一個HTTP服務器 103
5.2 設置請求處理程序 106
處理程序 106
5.3 測試服務器 109
5.4 Request(請求)結構 112
5.4.1 方法 112
5.4.2 URL 112
5.4.3 Proto、ProtoMajor和ProtoMinor 113
5.4.4 標頭 113
5.4.5 主機 113
5.4.6 正文 113
5.4.7 Form、PostForm 113
5.4.8 MultipartForm 114
5.5 將元數(shù)據附加到請求 115
5.6 處理流請求 118
5.7 將流數(shù)據作為響應 123
5.8 小結 128
第6章 高級HTTP服務器應用程序 129
6.1 處理程序的類型 129
6.2 跨處理程序共享數(shù)據 130
6.3 編寫服務器中間件 135
6.3.1 自定義HTTP處理程序技術 135
6.3.2 HandlerFunc技術 136
6.3.3 鏈接中間件 138
6.4 為復雜的服務器應用程序編寫測試 142
6.4.1 組織代碼 143
6.4.2 測試處理程序 148
6.4.3 測試中間件 151
6.4.4 測試服務器啟動 153
6.5 小結 155
第7章 生產級HTTP服務器 157
7.1 終止請求處理 157
7.1.1 終止請求處理的策略 160
7.1.2 處理客戶端斷開連接 165
7.2 服務器范圍的超時 168
7.2.1 為所有處理程序實現(xiàn)超時 169
7.2.2 實現(xiàn)服務器超時 169
7.3 實施優(yōu)雅的關機 174
7.4 使用TLS保護通信 178
7.4.1 配置TLS和HTTP/2 179
7.4.2 測試TLS服務器 183
7.5 小結 186
第8章 使用gRPC構建RPC應用程序 187
8.1 gRPC和協(xié)議緩沖區(qū) 187
8.2 編寫第一個服務 190
8.2.1 編寫服務器 192
8.2.2 編寫一個客戶端 196
8.2.3 測試服務器 201
8.2.4 測試客戶端 204
8.3 protobuf消息的詳細介紹 207
8.3.1 序列化和反序列化 207
8.3.2 向前和向后兼容 212
8.4 多個服務 214
8.5 錯誤處理 219
8.6 小結 221
第9章 高級gRPC應用 223
9.1 流通信 223
9.1.1 服務器端流傳輸 223
9.1.2 客戶端流傳輸 231
9.1.3 雙向流 233
9.2 接收和發(fā)送任意字節(jié) 241
9.3 使用攔截器實現(xiàn)中間件 250
9.3.1 客戶端攔截器 251
9.3.2 服務器端攔截器 257
9.3.3 包裝流 262
9.3.4 鏈接攔截器 264
9.4 小結 265
第10章 生產級gRPC應用 267
10.1 使用TLS保護通信 267
10.2 服務器健壯性 270
10.2.1 實施健康檢查 270
10.2.2 處理運行時錯誤 277
10.2.3 終止請求處理 280
10.3 客戶端健壯性 289
10.3.1 提高連接配置 289
10.3.2 處理瞬態(tài)故障 291
10.3.3 為方法調用設置超時 296
10.4 連接管理 297
10.5 小結 299
第11章 使用數(shù)據存儲 301
11.1 使用對象存儲 302
11.1.1 與包服務器集成 303
11.1.2 測試包上傳 312
11.1.3 訪問底層驅動類型 315
11.2 使用關系數(shù)據庫 316
11.2.1 與包服務器集成 318
11.2.2 測試數(shù)據存儲 328
11.2.3 數(shù)據類型轉換 332
11.2.4 使用數(shù)據庫事務 335
11.3 小結 337
—— 以下部分通過掃描封底二維碼獲取 ——
附錄A 使應用程序可觀察 339
附錄B 部署應用程序 356
附錄C 配置Go開發(fā)環(huán)境 362