温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用golang web框架Gin

发布时间:2021-10-14 15:14:00 来源:亿速云 阅读:243 作者:iii 栏目:编程语言

这篇文章主要讲解了“如何使用golang web框架Gin”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用golang web框架Gin”吧!  

Gin是用Go(Golang)编写的Web框架。

准备

  • 首先需要安装Go(需要1.12+版本)

1. 安装

  • github地址     https://github.com/gin-gonic/gin

新建目录go-gin-test. 然后cd进入目录

➜  mkdir go-gin-test
➜  cd go-gin-test
 

我们使用 go mod作为我们项目的包管理。

初始化go.mod文件

go mod init example.com/m/v2 

可以使用下面的Go命令安装Gin

go get -u github.com/gin-gonic/gin

看到如下输出证明我们已经安装好了gin。

➜  go-gin-test  go get -u github.com/gin-gonic/gin
go: github.com/gin-gonic/gin upgrade => v1.6.3
go: gopkg.in/yaml.v2 upgrade => v2.4.0
go: github.com/golang/protobuf upgrade => v1.5.2
go: github.com/modern-go/reflect2 upgrade => v1.0.1
go: github.com/modern-go/concurrent upgrade => v0.0.0-20180306012644-bacd9c7ef1dd
go: github.com/ugorji/go/codec upgrade => v1.2.5
go: golang.org/x/sys upgrade => v0.0.0-20210403161142-5e06dd20ab57
go: github.com/go-playground/validator/v10 upgrade => v10.4.2
go: github.com/json-iterator/go upgrade => v1.1.10
go: github.com/leodido/go-urn upgrade => v1.2.1
go: downloading github.com/golang/protobuf v1.5.2
go: downloading golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57
go: downloading github.com/go-playground/validator/v10 v10.4.2
go: downloading github.com/ugorji/go v1.2.5
go: downloading google.golang.org/protobuf v1.26.0
go: downloading github.com/ugorji/go/codec v1.2.5
go: golang.org/x/crypto upgrade => v0.0.0-20210322153248-0c34fe9e7dc2
go: google.golang.org/protobuf upgrade => v1.26.0
go: downloading golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2
 
  • 如果     go get长时间未响应或者出现超时建议使用     http://goproxy.cn/配置国内代理 

2. Hello World

现在我们来编写我们的第一个web程序

➜  go-gin-test tree -L 3
.
├── go.mod
└── go.sum
 

目前我们的目录结构如上所示

接下来

  • 新建     main.go文件
➜  go-gin-test tree -L 3
.
├── go.mod
├── go.sum
├── mian.go

首先我们来编辑main.go文件

package main

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

func main() {
 r := gin.Default()
 r.GET("/hello", func(c *gin.Context) {
  c.JSON(200, gin.H{
  "message": "hello world",
  })
 })
 r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

执行go build -o hello来编译为可执行文件

➜  go-gin-test go build -o hello
➜  go-gin-test ls
go.mod   go.sum   hello    mian.go
 

执行./hello让我们的服务跑起来

➜  go-gin-test ./hello 
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env:   export GIN_MODE=release
- using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /hello                    --> main.main.func1 (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/hello

如何使用golang web框架Gin  
image.png

至此,我们已经完成第一个web服务的构建

3. Router的分组和封装

在实际的生产活动中,业务接口通常需要拆分成很多,例如/user/XXX/api/XXX,那我们利用gin应该怎么做呢?

我们接着上面的工程进行改造

  • 新建     routerex文件夹
  • 新建     router.go文件
➜  go-gin-test tree -L 3
.
├── go.mod
├── go.sum
├── hello
├── mian.go
└── routerex
  └── router.go

编辑router.go文件

package routerex

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

func InitRouter(g *gin.Engine) {
  //第一组api接口 例如:http://localhost:8080/g1/hello1
  g1 := g.Group("g1")

  g1.GET("/hello1", func(c *gin.Context) {
  c.JSON(200, gin.H{
  "msg": "Hello g1",
  })
  })
  //第二组api接口 例如:http://localhost:8080/g1/hello1
  g2 := g.Group("g2")
  g2.GET("/hello2", func(c *gin.Context) {
  c.JSON(200, gin.H{
  "msg": "Hello g2",
  })
  })

}

 

编辑main.go文件

package main

import (
 "example.com/m/v2/routerex"
 "github.com/gin-gonic/gin"
)

func main() {
 r := gin.Default()
 routerex.InitRouter(r)
 r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
 

同样的执行go build -o hello编译

执行./hello启动服务

打开浏览器查看http://localhost:8080/g1/hello1http://localhost:8080/g2/hello2

如何使用golang web框架Gin  
image.png
如何使用golang web框架Gin  
image.png

可以看出我们已经拆分了两个不同的api组。并且封装了router的注册方式。

可以尝试联系以上方法

下一期内容预告:

  • gin的中间件的使用
  • post和get接口不同的获取参数方式
  • ...

想获取工程的同学可以关注超级英雄吉姆,在公众号里发送gin,获取工程。

如果你有更多的想知道的内容或者有什么好的建议,可以在评论里回复,或者关注我的公众号超级英雄吉姆,在公众号留言,我看到后第一时间回复。

感谢各位的阅读,以上就是“如何使用golang web框架Gin”的内容了,经过本文的学习后,相信大家对如何使用golang web框架Gin这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI