Skip to content

Latest commit

 

History

History
141 lines (80 loc) · 8.09 KB

File metadata and controls

141 lines (80 loc) · 8.09 KB

零、前言

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并注册,将文件通过电子邮件直接发送给您。

您可以通过以下步骤下载代码文件:

  1. 登录或注册www.packtpub.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书名称,然后按照屏幕上的说明进行操作。

下载文件后,请确保使用以下最新版本解压或解压缩文件夹:

  • 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