如何用 Go 快速编写出 HTTP REST API 服务?

在本教程中,明白如何用Go语言写出一个HTTP REST API服务 。

如何用 Go 快速编写出 HTTP REST API 服务?

文章插图
作者 | Aurelie Vache
译者 | 槐序,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
学习一门新语言并不容易,但是如果有具体的例子和手把手指导教程,就很容易上手了 。因此,我决定编写一系列分步指导教程 。
让我们使用Go语言的强大功能来编写一个HTTP REST API 服务 。
1.Go, Go, Go首先要做的就是安装GVM(Go版本管理器),当然还有安装GO 。
要安装GO,你可以按照官方网站上的安装步骤进行操作,也可以使用GVM来安装 。对于Go而言,GVM是一个非常实用的版本管理工具,它允许你通过指定所需版本来更新Go的版本 。
安装
Bash:
bash < <(curl -s-S-L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)zsh:
zsh < <(curl -s-S-L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)用法
$ gvmUsage: gvm [command]Description:GVM is the Go Version ManagerCommands:version — print the gvm version numberget — gets the latest code (for debugging)use — select a go version to use (--default to set permanently)diff — view changes to Go roothelp — display this usage textimplode — completely remove gvminstall — install go versionsuninstall — uninstall go versionscross — install go cross compilerslinkthis — link this directory into GOPATHlist — list installed go versionslistall — list available versionsalias — manage go version aliasespkgset — manage go packages setspkgenv — edit the environment for a package set让我们比较感兴趣的GVM 命令是gvm install命令,它的用法如下:
$ gvm install [version] [options]Go的安装:
$ gvm install go1.13.3 -B$ gvm use go1.13.3 --default在你的.zshrc或者.bashrc文件中,设置$GOROOT 和 $GOPATH环境变量,下面是一个例子:(原文下面的2 3 4代码行命令错误,少了空格)
[[ -s"$HOME/.gvm/scripts/gvm" ]] && source"$HOME/.gvm/scripts/gvm"export GOPATH=$HOME/goexport GOBIN=$GOPATH/binexport PATH=${PATH}:$GOBIN以上就是利用版本管理器来安装GO 。现在进入本文章的核心,来创建我们第一个CLI(命令行程序) 。
2.初始化你的App现在我们在GitHub中创建一个仓库(为了共享和开源) 。
首先,登录GitHub网站,单击仓库链接,创建一个名叫“http-go-server”的仓库:
如何用 Go 快速编写出 HTTP REST API 服务?

文章插图
然后,在你本地机器上,把这个新建的仓库克隆(git clone)到你想放的地方 。
“放任何我想放的地方?你确定?”
我们会用GO模块作为依赖项,所以不要忘记在GOPATH目录外git clone 。但事实上,好消息是,从GO 1.13版本开始,我们不需要再担心这个问题了 。Go模块现在可以在GOPATH目录下和目录外使用 。
这也是我在本文选择使用GO 1.13版本的原因 。
现在,为了方便找回及同步本地代码到git仓库,我们要git clone这个仓库:
$git clone https://github.com/scraly/http-go-server.git$cd http-go-server然后初始化go模块(依赖管理):
$ go mod init github.com/scraly/http-go-servergo: creating new go.mod: module github.com.scraly/http-go-server我们将创建一个简单的HTTP服务,但是为了代码组织方面具有良好实践 。因此我们不会将所有的代码放到main.go文件,我们会创建一个代码目录然后管理我们的代码 。
创建下面的文件目录结构:
.├── README.md├── bin├── doc├── go.mod├── internal├── pkg│ └── swagger└── scripts3.创建一个HTTP服务现在开始编写HTTP服务代码 。
Go是一个很强大的语言 。其中一个强大的功能就是有许多可用的内置包,例如net/HTTP 。在internal/路径下面创建一个main.go文件,如下所示:
package mainimport ("fmt""html""log""net/http")func main{http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))})log.Println("Listening on localhost:8080")log.Fatal(http.ListenAndServe(":8080", nil))}这个简单的例子创建了一个HTTP服务,并监听端口8080的传入请求,并在返回到根目录/ 。
现在构建我们的应用来测试它,然后启动应用程序二进制文件:


推荐阅读