图源:
Gin是Go语言的一个Web框架,可以用于开发Web程序或者Web API。
使用Gin的前提当然是要安装Go语言本体,并进行相关设置,这方面内容可以阅读。
下载Gin框架本体很简单:
go get -u -v github.com/gin-gonic/gin
但该应用会引用一些官方组件,所以在下载过程中会尝试下载其它引用的官方组件,而这可能因为Go的官方网站不能访问而失败,解决的方法有两种:
-
提前下载好依赖的官方工具包:
git clone https://github.com/golang/tools.git d:/workspace/go/src/golang.org/x/tools
,这里需要将命令行中的目标路径修改为你自己的$GOPATH
下的对应路径。 -
启用Go的代理功能:
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
个人推荐第二种方式。
下载好本体后可以创建测试代码进行测试:
// 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
}
这里的测试代码是我修改自的代码。
这里最好在$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
...省略
这样就可以自动创建包配置文件:
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
)
一般来说该文件不应该被手动修改。
更多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
在浏览器访问http://localhost:8080/users?name=lalala
:
最后还有一个需要改善的问题是,Go语言是静态语言,并不能像PHP那样修改即可见,每次都需要手动结束进程后重新启动。但这个问题是可以借助其它第三方工具来解决的:
go get -v -u github.com/pilu/fresh
下载过程中可能会出现一些错误提示,说应当使用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)...
...省略
记得先停止之前的Web应用进程。
其它Gin框架的使用说明可以参考或者。
谢谢阅读。
文章评论