Go 是一种开源编程语言,旨在扩展并支持语言级别的并发性,这使开发人员能够轻松编写大型并发 web 应用。
从创建 web 应用到在 AWS 上部署它,这将是学习 Go 中 web 开发的一站式指南。无论您是编程新手还是专业开发人员,这本书都会让您在 Go 中了解 web 开发的最新进展。
这本书将着重于编写 Go 中的模块化代码,并包含一步一步构建基础的深入信息配方。您将了解一些概念和方法,如创建服务器、使用 HTML 表单、会话和错误处理、SQL 和 NoSQL 数据库、Beego、创建和保护 RESTful web 服务、创建、单元测试和调试 WebSocket、创建 Go Docker 容器并在 AWS 上部署它们。
在本书结束时,您将能够在 Go 中应用新学到的技能,在任何领域创建和探索 web 应用。
本书面向希望使用 Go 编写大型并发 web 应用的开发人员。熟悉围棋的读者会发现这本书是最有益的。
第 1 章在 Go中创建您的第一台服务器,介绍如何编写 HTTP 和 TCP 服务器并与之交互,使用 GZIP 压缩优化服务器响应,以及在 Go web 应用中实现路由和登录。
第 2 章使用模板、静态文件和 HTML 表单介绍了如何创建 HTML 模板;从文件系统提供静态资源;创建、读取和验证 HTML 表单;并为 Go web 应用实现简单的用户身份验证。
第 3 章在 Go中处理会话、错误处理和缓存,探索使用 Redis 实现 HTTP 会话、HTTP Cookie、错误处理以及缓存和管理 HTTP 会话,这是跨多个数据中心部署的 web 应用所必需的。
第 4 章在 Go中编写和使用 RESTful Web 服务,说明如何编写 RESTful Web 服务,对其进行版本化,并使用 TypeScript 2、ReactJS 和 VueJS 客户端创建 AngularJS 来使用它们。
第 5 章使用 SQL 和 NoSQL 数据库,在 Go web 应用中使用 MySQL 和 MongoDB 数据库实现 CRUD 操作。
第 6 章使用 Micro 在 Go 中编写微服务——一个微服务工具包,重点是编写和使用协议缓冲区,使用微服务发现客户端(如 Consor),使用 Go Micro 编写微服务,并通过命令行和 web 仪表板与它们交互,实现 API 网关模式,通过 HTTP 协议访问微服务。
第 7 章在 Go中使用 WebSocket,介绍如何编写 WebSocket 服务器及其客户端,以及如何使用 GoLand IDE 编写单元测试和调试它们。
第 8 章、与 Go Web 应用框架——Beego合作,熟悉设置 Beego 项目架构,编写控制器、视图和过滤器,实现 Redis 支持的缓存,以及使用 Nginx 监控和部署 Beego 应用。
第 9 章与 Go 和 Docker合作,介绍编写 Docker 图像、创建 Docker 容器、用户定义的 Docker 网络、使用 Docker 注册表以及运行与另一 Docker 容器链接的 Go web 应用 Docker 容器。
第 10 章保护 Go Web 应用演示了使用 OpenSSL 创建服务器证书和私钥,将 HTTP 服务器移动到 HTTPS,使用 JSON Web 令牌(JWT)保护 RESTful API,以及防止 Go Web 应用中的跨站点请求伪造。
第 11 章将 Go Web 应用和 Docker 容器部署到 AWS中,讨论了在其上设置 EC2 实例、交互和运行 Go Web 应用和 Go Docker 容器。
读者应具备 Go 的基本知识,并在机器上安装 Go 以执行指令和代码。
您可以从您的账户www.packtpub.com下载本书的示例代码文件。如果您在其他地方购买了本书,您可以访问www.packtpub.com/support并注册,将文件通过电子邮件直接发送给您。
您可以通过以下步骤下载代码文件:
- 登录或注册www.packtpub.com。
- 选择“支持”选项卡。
- 点击代码下载和勘误表。
- 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用以下最新版本解压或解压缩文件夹:
- WinRAR/7-Zip for Windows
- 适用于 Mac 的 Zipeg/iZip/UnRarX
- 适用于 Linux 的 7-Zip/PeaZip
该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Go-Web-Development-Cookbook 。我们的丰富书籍和视频目录中还有其他代码包,请访问**https://github.com/PacktPublishing/** 。看看他们!
我们还提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。您可以在这里下载:http://www.packtpub.com/sites/default/files/downloads/GoWebDevelopmentCookbook_ColorImages.pdf 。
本书中使用了许多文本约定。
CodeInText
:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。下面是一个示例:“GZIP 压缩意味着以.gzip
格式从服务器向客户端发送响应,而不是发送普通响应。”
代码块设置如下:
for
{
conn, err := listener.Accept()
if err != nil
{
log.Fatal("Error accepting: ", err.Error())
}
log.Println(conn)
}
任何命令行输入或输出的编写方式如下:
$ go get github.com/gorilla/handlers
$ go get github.com/gorilla/mux
粗体:表示一个新术语、一个重要单词或您在屏幕上看到的单词。例如,菜单或对话框中的单词出现在文本中,如下所示。下面是一个示例:“AngularJS 客户端页面有一个 HTML 表单,其中包含 Id、FirstName 和 LastName 字段,如下面的屏幕截图所示。”
警告或重要提示如下所示。
提示和技巧如下所示。
在这本书中,你会发现几个经常出现的标题(准备就绪、如何做……、如何工作……、还有更多……、另见。
要明确说明如何完成配方,请使用以下部分:
本节告诉您配方中的预期内容,并介绍如何设置配方所需的任何软件或任何初步设置。
本节包含遵循配方所需的步骤。
本节通常包括对上一节中发生的情况的详细解释。
本节包含有关配方的附加信息,以使您更了解配方。
本节提供了有关配方的其他有用信息的有用链接。
我们欢迎读者的反馈。
一般反馈:发送电子邮件feedback@packtpub.com
并在邮件主题中提及书名。如果您对本书的任何方面有疑问,请发送电子邮件至questions@packtpub.com
。
勘误表:尽管我们已尽一切努力确保内容的准确性,但还是会出现错误。如果您在本书中发现错误,如果您能向我们报告,我们将不胜感激。请访问www.packtpub.com/submit-errata,选择您的书籍,点击 errata 提交表单链接,然后输入详细信息。
盗版:如果您在互联网上发现我们作品的任何形式的非法复制品,请您提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packtpub.com
与我们联系,并提供该材料的链接。
如果您有兴趣成为一名作家:如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请访问authors.packtpub.com。
请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在读者可以看到并使用您的无偏见意见做出购买决定,我们 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们书籍的反馈。非常感谢。
有关 Packt 的更多信息,请访问packtpub.com。