Skip to content

Latest commit

 

History

History
137 lines (77 loc) · 9.54 KB

File metadata and controls

137 lines (77 loc) · 9.54 KB

零、前言

最初,基于 SOAP 的 web 服务在 XML 中变得更加流行。然后,自 2012 年以来,REST 加快了步伐,一饮而尽。新一代 web 语言的兴起,如 Python、JavaScript(Node.js)和 Go,显示了与传统 web 语言(如 ASP.NET 和 Spring)不同的 web 开发方法。近十年来,围棋由于其速度快、直观性而越来越受欢迎。更少的详细代码、严格的类型检查和对并发性的支持使 Go 成为编写任何 web 后端的更好选择。一些最好的工具,如 Docker 和 Kubernetes,都是用 Go 编写的。谷歌在日常活动中大量使用 Go。您可以在上看到使用围棋的公司列表 https://github.com/golang/go/wiki/GoUsers

对于任何互联网公司来说,网络开发部门都是至关重要的。公司积累的数据需要以 API 或 web 服务的形式提供给客户。各种客户端(浏览器、移动应用程序和服务器)每天都在使用 API。REST 是一种体系结构模式,它以方法的形式定义资源消耗。

Go 是编写 web 服务器的更好语言。中间 Go 开发人员有责任知道如何使用该语言中可用的结构创建 RESTful 服务。一旦理解了基础知识,开发人员就应该学习其他东西,比如测试、优化和部署服务。本书试图让读者熟悉开发 web 服务。

专家们认为,在不久的将来,随着 Python 进入数据科学领域并与 R 竞争,Go 可以通过与 NodeJ 竞争而成为 web 开发领域中唯一的 Go-to 语言。这本书不是烹饪书。然而,在整个旅程中,它提供了许多提示和技巧。在本书的结尾,读者将通过大量示例熟悉 RESTAPI 开发。他们还将了解最新的实践,如协议缓冲区/gRPC/API 网关,这将使他们的知识更上一层楼。

这本书涵盖的内容

第 1 章REST API 开发入门,讨论 REST 架构和谓词的基本原理。

第 2 章为我们的 REST 服务处理路由,描述了如何将路由添加到我们的 API 中。

第 3 章使用中间件和 RPC是关于使用中间件处理程序和基本 RPC 的。

第 4 章使用流行的 Go 框架简化 RESTful 服务,介绍了使用框架的快速原型 API。

第 5 章与 MongoDB 合作,创建 REST API,说明如何使用 MongoDB 作为我们 API 的数据库。

第 6 章使用协议缓冲区和 gRPC展示了如何使用协议缓冲区和 gRPC 通过 HTTP/JSON 获得性能提升。

第 7 章使用 PostgreSQL、JSON 和 Go解释了 PostgreSQL 和用于创建 API 的 JSON 存储的好处。

第 8 章在 Go 中构建 REST API 客户端和单元测试介绍了在 Go 中构建客户端软件和使用单元测试进行 API 测试的技术。

第 9 章使用微服务扩展我们的 REST API,是关于使用 Go Kit 将我们的 API 服务分解为微服务。

第 10 章部署我们的 REST 服务展示了我们如何部署构建在 Nginx 上的服务,并使用 supervisord 对其进行监控。

第 11 章使用 API 网关对 REST API进行监控和度量,说明如何通过在 API 网关后面添加多个 API 来提升我们的服务生产等级。

第 12 章处理 REST 服务的认证讨论了使用基本认证和 JSON Web 令牌(JWT)保护我们的 API。

这本书你需要什么

对于本书,您需要安装 Linux(Ubuntu 16.04)、macOS X 或 Windows 的笔记本电脑。我们将使用 Go 1.8+作为编译器的版本,并安装许多第三方软件包,因此需要一个工作的 internet 连接。

在最后几章中,我们还将使用 Docker 来解释 API 网关的概念。建议使用 Docker V17.0+。如果 Windows 用户在本机 Go 安装中遇到任何问题,请使用 Docker for Windows 并运行 Ubuntu 容器,这将提供更大的灵活性;参见https://www.docker.com/docker-windows 了解更多详情。

在深入阅读本书之前,请在刷新您的语言基础知识 https://tour.golang.org/welcome/1

即使这些是基本要求,我们也将在需要时指导您完成安装。

这本书是给谁的

本书面向所有熟悉该语言并希望学习 RESTAPI 开发的 Go 开发人员。即使是高级工程师也会喜欢这本书,因为它有许多前沿概念,如微服务、协议缓冲区和 gRPC。

已经熟悉 REST 概念并从其他平台(如 Python 和 Ruby)进入围棋世界的开发人员也可以从中受益匪浅。

习俗

在本书中,您将发现许多文本样式可以区分不同类型的信息。下面是这些风格的一些例子,并解释了它们的含义。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄如下所示:“将前面的程序命名为basicHandler.go

代码块设置如下:

{
 "ID": 1,
 "DriverName": "Menaka",
 "OperatingStatus": true
 }

任何命令行输入或输出的编写方式如下:

go run customMux.go

新术语重要词语以粗体显示。您在屏幕上(例如,在菜单或对话框中)看到的文字在文本中显示如下:“它返回消息,说明登录成功。”

警告或重要注释显示在这样的框中。

提示和技巧如下所示。

读者反馈

我们欢迎读者的反馈。让我们知道你对这本书的看法你喜欢还是不喜欢。读者反馈对我们来说很重要,因为它可以帮助我们开发出您将真正从中获得最大收益的标题。

要向我们发送总体反馈,只需发送电子邮件feedback@packtpub.com,并在邮件主题中提及该书的标题。

如果您对某个主题有专业知识,并且您有兴趣撰写或贡献一本书,请参阅我们的作者指南www.packtpub.com/authors

客户支持

既然您是一本 Packt 图书的骄傲拥有者,我们有很多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您的帐户下载本书的示例代码文件 http://www.packtpub.com 。如果您在其他地方购买了本书,您可以访问http://www.packtpub.com/support 并注册,将文件直接通过电子邮件发送给您。

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

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的“支持”选项卡上。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称。
  5. 选择要下载代码文件的书籍。
  6. 从您购买本书的下拉菜单中选择。
  7. 点击代码下载。

您也可以通过点击 Packt Publishing 网站上书籍网页上的“代码文件”按钮下载代码文件。可以通过在搜索框中输入图书名称来访问此页面。请注意,您需要登录到您的 Packt 帐户。

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

  • WinRAR/7-Zip for Windows
  • 适用于 Mac 的 Zipeg/iZip/UnRarX
  • 适用于 Linux 的 7-Zip/PeaZip

该书的代码包也托管在 GitHub 上的https://github.com/PacktPublishing/Building-RESTful-Web-Services-with-Go 。我们的丰富书籍和视频目录中还有其他代码包,请访问**https://github.com/PacktPublishing/** 。看看他们!

下载本书的彩色图像

我们还为您提供了一个 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。彩色图像将帮助您更好地了解输出中的更改。您可以从下载此文件 https://www.packtpub.com/sites/default/files/downloads/BuildingRESTfulWebServiceswithGo_ColorImages.pdf

勘误表

虽然我们已尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的一本书中发现错误,可能是文本或代码中的错误,如果您能向我们报告,我们将不胜感激。通过这样做,您可以使其他读者免于沮丧,并帮助我们改进本书的后续版本。如果您发现任何错误,请访问进行报告 http://www.packtpub.com/submit-errata ,选择您的书籍,点击勘误表提交表单链接,然后输入勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上载到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请转至https://www.packtpub.com/books/content/support 并在搜索字段中输入图书名称。所需信息将出现在勘误表部分下。

盗版行为

在互联网上盗版版权材料是所有媒体都面临的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现任何形式的非法复制品,请立即向我们提供地址或网站名称,以便我们采取补救措施。

请致电copyright@packtpub.com与我们联系,并提供可疑盗版材料的链接。

我们感谢您在保护我们的作者方面提供的帮助以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有任何问题,可以通过questions@packtpub.com与我们联系,我们将尽力解决该问题。