新書推薦:
《
森林疗法:拥抱大自然、获得幸福的季节性方法
》
售價:HK$
74.8
《
希腊人(伊恩·莫里斯文明史系列)
》
售價:HK$
185.9
《
亚马逊六页纸 如何高效开会、写作、完成工作
》
售價:HK$
76.8
《
世界巨变:严复的角色(王中江著作系列)
》
售價:HK$
110.0
《
塔西佗(全二册)(二十世纪人文译丛)
》
售價:HK$
396.0
《
(棱镜精装人文译丛)思想的假死
》
售價:HK$
63.8
《
当代精神分析新论
》
售價:HK$
94.6
《
宋初三先生集(中国思想史资料丛刊)
》
售價:HK$
217.8
|
編輯推薦: |
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 URI15
1.8 HTTP 2简介16
1.9 Web应用的各个组成部分16
1.9.1 处理器17
1.9.2 模板引擎18
1.10 Hello Go18
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 安装PostgreSQL38
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和DefaultServeMux65
3.3.6 使用其他多路复用器66
3.4 使用HTTP 268
3.5 小结70
第4章处理请求72
4.1 请求和响应72
4.1.1 Request结构73
4.1.2 请求URL73
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 ResponseWriter86
4.4 cookie91
4.4.1 Go与cookie 91
4.4.2 将cookie发送至浏览器92
4.4.3 从浏览器里面获取cookie94
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与SQL137
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 Sqlx152
6.5.2 Gorm154
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分析和创建XML169
7.4.1 分析XML169
7.4.2 创建XML177
7.5 通过Go分析和创建JSON180
7.5.1 分析JSON181
7.5.2 创建JSON184
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 goroutine232
9.2.1 使用goroutine232
9.2.2 goroutine与性能235
9.2.3 等待goroutine238
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 将应用部署到 Heroku270
10.3 将应用部署到Google App Engine273
10.4 将应用部署到 Docker278
10.4.1 什么是Docker278
10.4.2 安装Docker279
10.4.3 Docker的理念与 组件280
10.4.4 Docker化一个Go Web 应用281
10.4.5 将Docker容器推送至 互联网283
10.5 部署方法之间的 对比286
10.6 小结287
附录安装和设置Go288
|
|