当前位置:   article > 正文

Go Gin 快速上手指南_gin快速上手

gin快速上手

Go Gin 快速上手指南

image-20211104180320178

图源:Golang Gin-Github

Gin是Go语言的一个Web框架,可以用于开发Web程序或者Web API。

使用Gin的前提当然是要安装Go语言本体,并进行相关设置,这方面内容可以阅读Go语言编程笔记1:Hello World

下载Gin框架本体很简单:

go get -u -v github.com/gin-gonic/gin
  • 1

但该应用会引用一些官方组件,所以在下载过程中会尝试下载其它引用的官方组件,而这可能因为Go的官方网站不能访问而失败,解决的方法有两种:

  1. 提前下载好依赖的官方工具包:git clone https://github.com/golang/tools.git d:/workspace/go/src/golang.org/x/tools,这里需要将命令行中的目标路径修改为你自己的$GOPATH下的对应路径。

  2. 启用Go的代理功能:

    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    
    • 1
    • 2

个人推荐第二种方式。

下载好本体后可以创建测试代码进行测试:

// geektutu.com
// main.go
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.String(200, "Hello, Geektutu")
	})
	r.GET("/user/:name", func(c *gin.Context) {
		name := c.Param("name")
		c.String(200, "Input name is %s", name)
	})
	r.GET("/users", func(c *gin.Context) {
		name := c.Query("name")
		age := c.DefaultQuery("age", "10")
		c.String(200, "Your name is %s, age is %s", name, age)
	})
	r.GET("/add", func(c *gin.Context) {
		name := c.Query("name")
		age := c.DefaultQuery("age", "10")
		c.String(http.StatusOK, "Add user name(%s) age(%s)", name, age)
	})
	r.Run() // listen and serve on 0.0.0.0:8080
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

这里的测试代码是我修改自Go Gin 简明教程的代码。

这里最好在$GOPATH/src/目录下创建一个新的目录进行测试。

如果通过go run xxx.go的方式不能运行,提示找不到go.mod文件,那是因为你启用了Go modules功能,需要通过该功能初始化包,生成包配置文件go.mod后才可以正常运行。

进入该测试代码的目录后执行:

go mod init
go: creating new go.mod: module gin_test
go: to add module requirements and sums:
        go mod tidy
❯ go mod tidy
go: finding module for package github.com/gin-gonic/gin
go: found github.com/gin-gonic/gin in github.com/gin-gonic/gin v1.7.4
go: downloading github.com/stretchr/testify v1.4.0
...省略
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这样就可以自动创建包配置文件:

module gin_test

go 1.17

require github.com/gin-gonic/gin v1.7.4

require (
	github.com/gin-contrib/sse v0.1.0 // indirect
	github.com/go-playground/locales v0.13.0 // indirect
	github.com/go-playground/universal-translator v0.17.0 // indirect
	github.com/go-playground/validator/v10 v10.4.1 // indirect
	...省略
	golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect
	golang.org/x/sys v0.0.0-20211103235746-7861aae1554b // indirect
	gopkg.in/yaml.v2 v2.2.8 // indirect
)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

一般来说该文件不应该被手动修改。

更多go mod的命令可以通过go mod help进行查看。

现在通过go run xxx.go或者IDE就可以正常运行这个测试用的Web应用了:

...省略
[GIN-debug] GET    /users                    --> main.main.func3 (3 handlers)
[GIN-debug] GET    /add                      --> main.main.func4 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
  • 1
  • 2
  • 3
  • 4
  • 5

在浏览器访问http://localhost:8080/users?name=lalala

image-20211104174247920

最后还有一个需要改善的问题是,Go语言是静态语言,并不能像PHP那样修改即可见,每次都需要手动结束进程后重新启动。但这个问题是可以借助其它第三方工具来解决的:

go get -v -u github.com/pilu/fresh
  • 1

下载过程中可能会出现一些错误提示,说应当使用go install xxx之类的,这是因为新版本的Go建议对于可运行的Go程序应当使用go install,不过这里我们直接忽略就可以了。

在测试代码所在的目录执行:

❯ fresh
17:57:15 runner      | InitFolders
17:57:15 runner      | mkdir ./tmp
17:57:15 runner      | mkdir ./tmp: Cannot create a file when that file already exists.
17:57:15 watcher     | Watching .
17:57:15 main        | Waiting (loop 1)...
17:57:15 main        | receiving first event /
17:57:15 main        | sleeping for 600 milliseconds
17:57:15 main        | flushing events
17:57:15 main        | Started! (5 Goroutines)
17:57:15 build       | Building...
17:57:19 runner      | Running...
17:57:19 main        | --------------------
17:57:19 main        | Waiting (loop 2)...
...省略
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

记得先停止之前的Web应用进程。

现在修改示例代码后保存就可以自动重新运行Web应用,感受上更接近于PHP那种“修改后可以立即看到效果”的方式。

其它Gin框架的使用说明可以参考Golang Gin-Github或者Go Gin 简明教程

谢谢阅读。

参考资料

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/440551
推荐阅读
相关标签
  

闽ICP备14008679号