序言
本书我们将从头到尾构建一个名为Greenlight的应用程序-用于检索和管理有关电影的信息的JSONAPI。
你可以思考下它核心功能有点类似于开放电影数据库API。
最后我们的Greenlight API将支持以下API和操作:
Method | URL | 动作 |
---|---|---|
GET | /v1/healthcheck | 显示应用程序运行状况和版本信息 |
GET | /v1/movies | 显示所有电影的详情 |
POST | /v1/movies | 添加新的电影 |
GET | /v1/movies/:id | 根据id查询特定电影 |
PATCH | /v1/movies/:id | 更新特定电影 |
DELETE | /v1/movies/:id | 删除特定电影 |
POST | /v1/users | 注册用户 |
PUT | /v1/users/activated | 激活用户 |
PUT | /v1/users/password | 更新用户密码 |
POST | /v1/tokens/authentication | 生成新的身份验证token |
POST | /v1/tokens/password-reset | 生成一个新的密码重置令牌 |
GET | /debug/vars/ | 显示应用性能参数 |
为了能够从客户角度来看下API是怎样的,在本书末尾GET /v1/movies/:id端点将返回如下响应内容:
curl -H "Authorization: Bearer RIDBIAE3AMMK57T6IAEBUGA7ZQ" localhost:4000/v1/movies/1
{
"movie": {
"id": 1,
"title": "Moana", "year": 2016, "runtime": "107 mins", "genres": [
"animation",
"adventure" ],
"version": 1 }
}
在后端我们将使用PostgreSQL作为数据库来持久化所有的数据。并在本书的结尾,我们将在一台Linux服务器中部署完成后的API应用程序。
文章格式约定
在本书,代码块以Markdown格式显示,如下面的代码片段所示。如果代码块特别长,不相关的部分可以用省略号替换。为了便于理解,大多数代码块在顶部都有一个行文件名称,指示我们正在处理的文件。
File: hello.go
package main
... // Indicates that some existing code has been omitted.
func sayHello() { fmt.Println("Hello world!")
}
终端(命令行)指令以黑色背景显示,通常以美元符号开始。这些命令应该可以在任何基于unix的操作系统上执行,包括macOS和Linux。命令执行结果以白色显示在命令下面,如下所示:
$ echo "Hello world!"
Hello world
如果你使用Windows,你应该用DOS等价的命令替换这些命令,或者通过正常的Windows GUI执行操作。
这本书的一些章节以附部分结束。这些部分包含的信息与我们的应用程序构建无关,但仍然很重要(有时只是有趣)。
背景知识
本书是接着Let's Go这本书来写的,将会沿用很多其中使用信息和代码模式。
如果你已经读过并喜欢《Let’s Go》,那么这本书应该很适合你,是你下一步学习的理想读物。如果你还没有读,那么我强烈建议你先从Let's Go开始——特别是如果你是一个新手。
您可以单独阅读这本书,但请注意它的难度更高——它没有详细解释基础知识,一些内容(如测试)根本没有出现,因为它们在前一本书中已经有大量介绍。但如果你已习惯使用Go,并且已经有了相当多的经验,那么这本书可能也很适合你。请随意直奔主题。
GO 1.16
本书中的代码使用最新的Go 1.16版本验证过,如果您想要跟随构建应用程序的话,就应该安装该版本。
如果你已经安装了Go,你通过在终端中执行go version来检查版本。返回结果如下所示:
$ go version
go version go1.16 linux/amd64
如果你需要升级Go,请马上开始。根据你的操作系统升级手册在这里。
其他软件
如果你想要完全遵循本书,你应该确保你的电脑上有其他一些软件。它们是:
网友评论