Go Web编程

出版社:电子工业出版社
出版日期:2013-6-1
ISBN:9787121200915
作者:谢孟军
页数:329页

作者简介

《Go Web编程》介绍如何用Go语言进行Web应用的开发,将Go语言的特性与Web开发实战组合到一起,帮读者成功地构建跨平台的应用程序,节省Go语言开发Web的宝贵时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。
在《Go Web编程》中,读者可以更加方便地找到各种编程问题的解决方案,内容涵盖文本处理、表单处理、Session管理、数据库交互、加/解密、国际化和标准化,以及程序的部署维护等运维方面的知识,最后还介绍了一个快速开发的框架帮助您迅速进入Go语言的Web开发。

书籍目录

第1章 GO语言环境配置
1.1 Go语言安装
Go语言的三种安装方式
Go语言源码安装
Go语言标准包安装
第三方工具安装
1.2 GOPATH与工作空间
GOPATH设置
应用目录结构
编译应用
获取远程包
程序的整体结构
1.3 Go语言命令
Go语言命令
go build
go clean
go fmt
go get
go install
go test
go doc
其他命令
1.4 Go语言开发工具
LiteIDE
Sublime Text
Vim
Emacs
Eclipse
IntelliJ IDEA
1.5 总结
第2章 Go语言基础
2.1 你好,Go
程序
详解
小结
2.2 Go语言基础
定义变量
常量
内置基础类型
一些技巧
array、slice、map
2.3 流程和函数
流程控制
函数
2.4 struct类型
struct
2.5 面向对象
method
2.6 interface
interface
2.7 并发
goroutine
channels
Buffered Channels
Range和Close
Select
超时
runtime goroutine
2.8 总结
第3章 Web基础
3.1 Web工作方式
URL和DNS解析
HTTP协议详解
请求实例
3.2 GO语言搭建一个Web服务器
http包建立Web服务器
3.3 Go语言如何使Web工作
Web工作方式的几个概念
分析http包运行机制
3.4 Go语言的http包详解
Conn的goroutine
ServeMux的自定义
Go语言代码的执行流程
3.5 总结
第4章 表单
4.1 处理表单的输入
4.2 验证表单的输入
必填字段
数字
中文
英文
电子邮件地址
手机号码
下拉菜单
单选按钮
复选框
日期和时间
身份证号码
4.3 预防跨站脚本
4.4 防止多次递交表单
4.5 处理文件上传
客户端上传文件
4.6 总结
第5章 访问数据库
5.1 database/sql接口
sql.Register
driver.Driver
driver.Conn
driver.Stmt
driver.Tx
driver.Execer
driver.Result
driver.Rows
driver.RowsAffected
driver.Value
driver.ValueConverter
driver.Valuer
database/sql
5.2 使用MySQL数据库
MySQL驱动
示例代码
5.3 使用SQLite数据库
驱动
实例代码
5.4 使用PostgreSQL数据库
驱动
实例代码
5.5 使用beedb库进行ORM开发
安装
如何初始化
插入数据
更新数据
查询数据
删除数据
关联查询
Group By和Having
进一步的发展
5.6 NOSQL数据库操作
redis
MongoDB
5.7 总结
第6章 Session和数据存储
6.1 Session和Cookie
Cookie
Session
小结
6.2 Go语言如何使用Session
Session创建过程
Go语言实现Session管理
6.3 Session存储
6.4 预防Session劫持
Session劫持过程
Session劫持防范
6.5 总结
第7章 文本处理
7.1 XML处理
解析XML
输出XML
7.2 JSON处理
解析JSON
生成JSON
7.3 正则处理
通过正则判断是否匹配
通过正则获取内容
7.4 模板处理
什么是模板
Go语言模板使用
模板中如何插入数据
Must操作
嵌套模板
小结
7.5 文件操作
目录操作
文件操作
7.6 字符串处理
字符串操作
字符串转换
7.7 总结
第8章 Web服务
8.1 Socket编程
什么是Socket
Socket如何通信
Socket基础知识
TCP Socket
UDP Socket
小结
8.2 WebSocket
WebSocket原理
Go语言实现WebSocket
8.3 REST
什么是REST
RESTful的实现
小结
8.4 RPC
RPC工作原理
Go RPC
小结
8.5 总结
第9章 安全与加密
9.1 预防CSRF攻击
什么是CSRF
CSRF的原理
如何预防CSRF
总结
9.2 确保输入过滤
识别数据
过滤数据
区分过滤数据
小结
9.3 避免XSS攻击
什么是XSS
XSS的原理
如何预防XSS
小结
9.4 避免SQL注入
什么是SQL注入
SQL注入实例
如何预防SQL注入
小结
9.5 存储密码
普通方案
进阶方案
专家方案
总结
9.6 加密和解密数据
base64加解密
高级加解密
小结
9.7 总结
第10章 国际化和本地化
10.1 设置默认地区
什么是Locale
设置Locale
小结
10.2 本地化资源
本地化文本信息
本地化日期和时间
本地化货币值
本地化视图和资源
小结
10.3 国际化站点
管理多个本地包
自动加载本地包
template mapfunc
小结
10.4 总结
第11章 错误处理,调试和测试
11.1 错误处理
Error类型
自定义error
错误处理
小结
11.2 使用GDB调试
GDB调试简介
常用命令
调试过程
小结
11.3 Go语言怎么写测试用例
如何编写测试用例
如何编写压力测试
小结
11.4 总结
第12章 部署与维护
12.1 应用日志
seelog介绍
基于seelog的自定义日志处理
发生错误发送邮件
使用应用日志
小结
12.2 网站错误处理
错误处理的目标
如何处理错误
如何处理异常
小结
12.3 应用部署
daemon
Supervisord
小结
12.4 备份和恢复
应用备份
MySQL备份
MySQL恢复
redis备份
redis恢复
小结
12.5 总结
第13章 如何设计一个Web框架
13.1 项目规划
gopath以及项目设置
应用程序流程图
目录结构
框架设计
总结
13.2 自定义路由器设计
HTTP路由
默认的路由实现
beego框架路由实现
13.4 日志和配置设计
日志和配置的重要性
beego的日志设计
beego的配置设计
应用指南
13.5 实现博客的增删改
博客目录
博客路由
数据库结构
控制器
model层
view层
13.6 总结
第14章 扩展Web框架
14.1 静态文件支持
beego静态文件实现和设置
Bootstrap集成
14.2 Session支持
Session集成
Session使用
14.3 表单及验证支持
表单和验证
表单类型
表单验证
14.4 用户认证
HTTP Basic和HTTP Digest认证
oauth和oauth2的认证
自定义认证
14.5 多语言支持
i18n集成
多语言开发使用
14.6 pprof支持
beego支持pprof 使用入门
14.7 小结
附录A 参考资料

编辑推荐

《Go Web编程》编辑推荐:Go语言性能好、语法简单、开发效率高!一起来探索Go语言吧!《Go Web编程》特别适合从事PHP/Python/Ruby/Node.js等Web开发的读者,通过《Go Web编程》可以了解编译型语言怎么写Web应用开发,系统底层怎么进行网络通信。还适合从事C/C++/Java等系统级别开发的读者,通过《Go Web编程》可以了解到Web开发的一些知识,例如,如何处理表单,如何进行用户认证以及Session/Cookie等各方面的Web应用。

前言

缘起自从一年半之前看到许式伟的博客,我认识了Go这一门语言,发现Go是C系的,个人又偏爱C语言,所以就开始了Go语言的学习之路,用三天时间学习了Go语言的所有语法和基础知识。恰逢当时手上有一些小项目练手,在项目开发中进一步发现Go语言具有三大优点:第一,性能好,我的Mac能够跑2万左右的并发;第二,语法简单,对于以前有C语言基础的人来说非常容易上手,我仅用一天时间就熟悉了基本语法,Go语言是一个上手即用的语言;第三,开发效率高,目前有很多编辑器支持Go语言,对于开发效率有很大的提升,一般的小项目半天就能解决。通过一年多来对Go语言项目的实战累积,我越来越觉得Go是一门工程语言,而不是其他学院派。无论是开发、测试、部署、项目规模的扩展,或者是团队协作,Go语言考虑都非常周到;而且其语法恰当好处,不多不少,够用就是它的设计原则,所以Go语言非常适合项目的开发。选择Go语言,还有一部分是缘于我的个人崇拜,Go语言的作者不乏鼎鼎大名的牛人:Robert Griesemer、Rob Pike和Ken Thompson,他们曾设计C语言和Unix系统,后来隶属Plan9团队。重要的是,在Go语言的完全开源中,很多名人都参与了进来,使得这个项目越来越完善:Go1.1出来后,性能提升了30-50%,而且GC(垃圾回收机制)已经达到了非常高的水准。相信在开源社区和大牛的共同推动下,Go语言会茁壮成长。Go Web我以前是PHP开发者,有十年左右的Web开发经验,但在Go语言的显著优势下,逐渐走向了Go语言的开发之路。我发现Go语言虽然有很强大的网络编程库,但是在Web编程方面没有详细的介绍,也缺少一些比较实用的库,所以结合先前的Web开发经验,以及Go语言本身的网络编程库,开始了这本书的创作过程,希望更多同行能够加入到Go语言的开发行列。这本书主要分三部分,第一部分是Go语言的基础语法,主要介绍了Go语言的一些语法特性、环境配置和开发工具。第二部分是Web开发,主要介绍了Go Web的基本原理、表单处理、数据库操作、Session和Cookie处理、文本处理、Socket编程、安全加密、国际化和本地化、错误处理和调试、如何部署和维护等知识点,并且针对整个Web开发中需要用到的知识点,结合Go语言代码的原理进行了详细的介绍,针对Go语言在Web开发方面不存在的工具,提供了详细的实现方式。第三部分是应用框架beego,主要介绍了beego框架的设计、实现及应用。目前书中提到的一些功能都可以在我的github找到相应的代码,方便读者进行深入的研究。这是一本关于Web的书,我觉得特别适合以下几种开发者:如果你是PHP或者其他动态语言爱好者,Go语言不一定能带给你很大的惊喜,因为原来的速度不是根本问题。但如果是类似API应用方面,使用Go语言之后,你会发现性能得到了一个量的提升,这本书中就有详细介绍API开发的实例。如果你是C语言爱好者,强烈建议你学习和使用Go语言。Go语言称为21世纪的C语言,它不仅可以调用C语言程序,又可以提供足够的便利;虽然速度上稍有牺牲,但无关大雅。大部分场景下,Go语言都能带给你与C语言媲美的性能,对于某些确实性能关键的场合,我们也可以通过cgo,让Go语言和C语言搭配使用。如果你是Java爱好者,那么也建议你学习一下Go语言,因为Java能给你的,Go语言能给得更好。如果你是C++爱好者,那么赶紧来看看Go语言吧,因为光学习C++特性的时间,已经可以开发多个Go语言项目了。致谢Go社区里的同仁们给了我很大的支持,如果没有他们的反馈和帮助,我就不能顺利完成本书。非常感谢四月份平民、Hong Ruiqi、BianJiang、Oling Cat、Wenlei Wu、polaris、雨痕等网友的热心指导,还有很多github中的贡献者,本书是在大家共同协作努力下才得以完成。我还要感谢符隆美编辑对我的支持,当我才思枯竭、延期脱稿时,她经常鼓励我、开导我,使我在压力下完成此书并最终出版。最后要感谢家庭对我的莫大支持,妻子刘玉娟帮我收集资料,帮忙完成了本书的大部分整理工作,儿子们倾听我的思路想法,没有他们,我也没有毅力完成写作,谢谢他们。谢孟军2013年4月于上海

内容概要

谢孟军,网名ASTA谢,现就职于盛大云,高级研究员,技术经理,主要从事盛大云分发的系统研发工作,努力为盛大游戏、盛大文学、酷六等提供更好的CDN服务。热爱技术,尤其关注实现服务器端高性能、高可用等相关技术。开发了beego、beedb等各类基于Go语言的开源框架和库,致力于Go语言的推广和研究。

名人推荐

为什么我可以如此坚定地相信,选择Go语言不会有错,并且相信Go语言会成为未来十年最流行的语言?除了Go语言的并发编程模型深得我心外,Go语言的各种语法特性显得那么深思熟虑、卓绝不凡,其对软件系统架构的领悟,让我深觉无法望其项背,处处带给我惊喜。——许式伟,七牛云存储CEOGo语言的目标是成为集合解释型编程的轻松、动态类型语言的高效及静态类型语言的安全三大优点的编译型语言,同时它对网络编程与多核计算支持非常好。——郭理靖,京东商城云平台资深工程师,高级经理作者是国内较早研究GO语言在网络应用的实践和推广者,该书讲述了GO语言在Web开发方面的应用,例子详实,文章充实。不管是新手还是老鸟,读之受益匪浅。——网友@waylau作者长期的Web开发经验和大量的实用技巧,使得本书的实用性远非其他空讲语法及概念的书籍可比。无论作为Go语言入门教程还是作为工具书,都是读者极好的选择。——网友@xgdapg认真读过该书,作者讲解深入浅出,并且用beego和beedb开发了几个自己的项目,非常好,适合新人。——网友@JessonChan作者作为国内Go语言的践行先驱,出手确实不一般。本书无论是学习Go语言还是Web编程相关概念和工具,都是一本值得反复阅读的好书。——网友@aaronyue作为谷粉同是也是个码农,当然不能放过Go语言,这本书让我受益匪浅,非常感谢!——网友@Xuyuanp

章节摘录

版权页:   插图:   过滤用户数据是Web应用安全的基础,是验证数据合法性的过程。通过对所有的输入数据进行过滤,可以避免恶意数据在程序中被误信或误用。大多数Web应用的漏洞都是因为没有对用户输入的数据进行恰当过滤所引起。 我们介绍的过滤数据分成三个步骤。 1.识别数据,搞清楚需要过滤的数据来自于哪里。 2.过滤数据,弄明白我们需要什么样的数据。 3.区分己过滤及被污染数据,如果存在攻击数据,保证过滤之后可以让我们使用更安全的数据。 识别数据 “识别数据”作为第一步是因为在你不知道“数据是什么,它来自于哪里”的前提下,你也就不能正确地过滤它。这里的数据是指所有源自非代码内部提供的数据。例如,所有来自客户端的数据,但客户端并不是唯一的外部数据源,数据库和第三方提供的接口数据等也可以是外部数据源。 我们通过G0语言非常容易识别由用户输入的数据,G0语言通过r.ParseForm之后,把用户POST和GET的数据全部放在了r.Form里面。其他的输入更难识别,例如,r.Header中的很多元素是由客户端所操纵的。常常很难确认其中的哪些元素组成了输入,所以,最好的方法是把里面所有的数据都看成是用户输入(例如r.Header.Get(”Accept—Charset”)这也看做是用户输入,虽然这些大多数是浏览器操纵的)。 过滤数据 知道数据来源之后,就可以过滤它了。过滤是一个有点正式的术语,它在平时表述中有很多同义词,如验证、清洁及净化。尽管这些术语表面意义不同,但它们都是指同一个处理:防止非法数据进入应用。 过滤数据有很多种方法,有一些安全性较差。最好的方法是把过滤看成一个检查的过程,在你使用数据之前都检查一下、看它们是否符合合法数据的要求。不要试图好心地去纠正非法数据,而要让用户按你制定的规则去输入数据。历史证明了试图纠正非法数据往往会导致安全漏洞。举个例子:“某银行系统升级之后,如果密码后面两位是0,只要输入前面四位就能登录系统”,这是一个非常严重的漏洞。


 Go Web编程下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计7条)

  •     《Go Web编程》介绍如何用Go语言进行Web应用的开发,将Go语言的特性与Web开发实战组合到一起,帮读者成功地构建跨平台的应用程序,节省Go语言开发Web的宝贵时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解。在《Go Web编程》中,读者可以更加方便地找到各种编程问题的解决方案,内容涵盖文本处理、表单处理、Session管理、数据库交互、加/解密、国际化和标准化,以及程序的部署维护等运维方面的知识,最后还介绍了一个快速开发的框架帮助您迅速进入Go语言的Web开发。
  •     不但详细精解了用go语言做web开发方面的技术,也从基础开始详细的介绍了go语言的细节。对无论是初学者还是已经有其他语言的编程经验,或者已经使用go开发过项目,想用golang开发web类项目的人群,都有极高的借鉴和学习价值。
  •     很勉强看完了整本。来说说我的感受。我将从三个角度去评价:1. 章节设置;2. 叙述手法;3. 整书排版1. 章节设置:总体上来讲,没什么大的问题。从环境配置到语法说明再到常用技能再到框架。但是,入门语法介绍部分,作者没有就 Go 语言的特性继续深入讲解。而把 http 包的讲解放到了第三章,让刚看完语法的读者很难衔接得上。最后关于 beego 框架的章节则显得鸡肋。2. 叙述手法:作为一本入门级书籍,但对于绝大部分知识点,作者的讲解方法都是:直接贴的源码,然后简单说明,出结论。贴的源码没有注释,有时候还上下文不清晰;说明的部分没有从读者的问题角度出发去解释,而是以作者的理解去概括。然后就直接出了结论,整个过程都没有引导读者思考。3. 整书排版:三个字,相当差。大量的源码和截图跟文字交错,显得排版没有层次感。没有标识符,没有旁注,整书都采用同一种字体(没有区分度)。——这是 markdown 生成的?这是我第一次看关于解释 Go 的书籍,也是第一次看国内的技术书。总结就是,整本书都是走马观花,浅尝辄止,没有重点。

精彩短评 (总计65条)

  •     谢谢分享~
  •     国内的技术牛写作水平普遍不高,作为 Go web 开发的入门书还不错,可读性不高,技术/代码之外的文字比较生硬。
  •     大家直接去看官方文档吧http://blog.golang.org/ 我觉得这个就足够了!(需要翻墙,真是太丧心病狂了
  •     挺好的,粗略看了下,从go基础开始看很好懂
  •     纸质很好,装订也很不错,总之值得买!
  •     这本书看的很快.对Go的定义目前只是了解
  •     快速浏览了一遍,语法足够简洁,两个月后重点学习
  •     易上手
  •     相比较里面写的内容,我更喜欢这种发布书籍的方式
  •     快速过一遍,了解个梗概足够用了,需要的时候还是需要再去google查
  •     还算不错,买的值得,讲的还是挺全的
  •     正在看,感觉不错
  •     是国内go语言最有技术含量的一本书,读完电子版后决定买一个实体书,因为书写得真心好
  •     翻完纸质书,确实写的不错。全书很多通俗易懂浅显的例子,很容易入门。不过个人不太喜欢有些章节的顺序,比如 go 自带工具的介绍,基础库的使用(string/file/log等)之类应该放前面一些,pprof 章节也略少。 #golang#
  •     一般般 还不错
  •     有点流水账,但是作为入门书看看,掌握个大概也是可以的。要深入学习研究还是得看官方文档的。
  •     内容还可以,就是有太多不是go语言的东西了。这本书给初学者还不错。
  •     讲的比较浅显,golang http包的剖析很粗糙,不如自己去看看源码来得有用。
  •     Go语言的中文书的确没多少。所以还是先支持一下(开源图书但一定要买本支持下)。但是这本书的最大问题就是前面大量的篇幅在讲Go的语法,而后面进入Web编程的正题之后却实在是写得太简略了。
  •     goroutine增强了并发能力,语言也相对轻量级。但相形其他语言框架如scala/play2来说,学习、使用难度还是不能overweigh它的优势。
  •     用go做web编程,好像相关的框架还是不够成熟啊。不过继续折腾和学习都是必须的
  •     当时是看这本入门的
  •     简明教程
  •     写的非常好, 从设计到实现, 都展现出了作者对web的深刻了解. 也用非常浅显易懂的方式呈现给了读者. 看完后,对设计一个web框架有了更深一步的了解.
  •     如果你没有web开发基础,看起来会很吃力
  •     #goroutine#
  •     比那本《Go语言编程》写的好
  •     via https://github.com/astaxie/build-web-application-with-golang
  •     还不错,前面基础语法直接跳过
  •     好东西,适合入门
  •     粗略的翻完一遍
  •     内容比较简单,不过还蛮适合作为一个快速的概览。
  •     书中讲到了一些常见的基础语法,可以作为Go语言的入门书。同时语法不是这本书的重点,书的内容覆盖了web开发的几个常见的部分,所以也可以做为web开发的参考。不仅仅是入门的选择,其中甚至有些东西也给我这种老程序员不少启发。而访问作者在github上的其他资源,也是大有收获。这里值得强调的是,作者的开源和分享的精神,值得我们尊敬。获悉作者正在写另外一本书,讲GO和unix的,仅看到目录,就令人期待。我觉得,无论你是刚毕业还是已经工作过3、5年,像这么一个技术大牛的东东,是值得关注的。
  •     go web入门书籍,讲一个go web大概框架
  •     正在阅读中,暂无评价.
  •     不严谨
  •     这本书非常值得推荐,内容充实。覆盖面很大。
  •     beego的作者写的
  •     我觉得代码是否优雅一致是讲求一些设计理念的。对于这本书,谢大写得非常棒,很多东西写得浅显易懂便于大家理解。至于代码的优雅程度,我觉得谢大可以把beego改造的更优雅,更模块化,明明是可以更好的。
  •     许多技术细节没写,只能算一般,不适合初学者
  •     作者倾注了大量的心血,都是经验之谈,讲解得很通透,学习golang不二之选
  •     内容比较简单,从0知识讲述GO语言,和普及了web编程基础知识.
  •     四分讲Go,六分讲web。很好
  •     golang 是大巧不工, ruby 是无微不至
  •     废话少,姿势多
  •     我是看的开源电子版的,一颗星是给开源打的,本书中基础部分有许多选自另一本开源的go教程,在panic那章,几乎一模一样。剩下的内容也就是互联网摘抄,买一本真的是没有必要了。但是中文内容匮乏,不妨一看。有能力的还是去读program in go和way to go吧
  •     不适合零基础的同学, 适合有一定开发经验的同学. 介绍了 web 开发里比较核心概念, 这部分值得一读. 介绍了 golang 开发的流程, 不错. 如果有其他语言背景(Python, c 等), 可以通过此书, 快速了解 golang 的核心概念. 没有基础的话, 还是要读一下更基础的东西,比如 golang 官方文档. 本书后面部分, 有 安利作者自己写的 golang web 框架, 这部分可以略过. 当然了解一下 web 框架的设计思路, 也是可取的. 总体上还是不错的.值得推荐.
  •     挺好的Go语言Web开发入门书。语言表达水平和示例代码有提高空间。
  •     读了2章,看不下去了,读过最差的书了,大家都别买,写推荐序的,你们真去看了嘛?
  •     看完之后,表示还行。作者计算机知识过硬,见识广泛,经验丰富。算是学习go之于web的不错的书。对于go入门还是很有帮助的。
  •     学习go的补充阅读
  •     找一些防sql注入的时候无意找到的,不错
  •     写的比较好,自成系统,可以作为Go语言的入门学习和web开发练手教材
  •     可操作性强,github上写完的著作啊
  •     目前学习GO语言的好书籍,期待新的书籍.
  •     说真的,比老许那本可强多了。
  •     还不错,简单了解可以读一读。
  •     非常基础,不过写的还不错,条理清晰
  •     买国内的专业类技术书这本书是第一次让我觉得买的很值的一本书。就像Go语言一样,这本书的特点是简洁、明快,简单而又直接的将Go语言讲明白了。即使有网络免费版,也还是买本实体书来支持作者。
  •     今天刚买,还没到,但我在github上面已经看了一段时间,是在不习惯看电子书,所以买了本,
  •     虽然写得不是很深入,许多知识点只是浅尝辄止,但是对于新手,仍然是值得推荐的入门书籍。
  •     一直在用谢大的beego,比martini方便
  •     git上就有,可以看最新版的
  •     非常系统地讲解了web开发的各方面,结合源码非常清楚
  •     我本人不是做web的,偶然需求做一个web server很多例子对于web srv 非常有帮助
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024