您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何使用golang web框架Gin”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何使用golang web框架Gin”吧!
https://github.com/gin-gonic/gin
新建目錄go-gin-test
. 然后cd
進(jìn)入目錄
? mkdir go-gin-test
? cd go-gin-test
我們使用 go mod
作為我們項(xiàng)目的包管理。
初始化go.mod文件
go mod init example.com/m/v2
可以使用下面的Go命令安裝Gin
go get -u github.com/gin-gonic/gin
看到如下輸出證明我們已經(jīng)安裝好了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
長時(shí)間未響應(yīng)或者出現(xiàn)超時(shí)建議使用
http://goproxy.cn/
配置國內(nèi)代理 現(xiàn)在我們來編寫我們的第一個web程序
? go-gin-test tree -L 3
.
├── go.mod
└── go.sum
目前我們的目錄結(jié)構(gòu)如上所示
接下來
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")
}
執(zhí)行go build -o hello
來編譯為可執(zhí)行文件
? go-gin-test go build -o hello
? go-gin-test ls
go.mod go.sum hello mian.go
執(zhí)行./hello
讓我們的服務(wù)跑起來
? 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
至此,我們已經(jīng)完成第一個web服務(wù)的構(gòu)建
在實(shí)際的生產(chǎn)活動中,業(yè)務(wù)接口通常需要拆分成很多組
,例如/user/XXX
、/api/XXX
,那我們利用gin應(yīng)該怎么做呢?
我們接著上面的工程進(jìn)行改造
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")
}
同樣的執(zhí)行go build -o hello
編譯
執(zhí)行./hello
啟動服務(wù)
打開瀏覽器查看http://localhost:8080/g1/hello1
和http://localhost:8080/g2/hello2
可以看出我們已經(jīng)拆分了兩個不同的api組。并且封裝了router的注冊方式。
可以嘗試聯(lián)系以上方法
下一期內(nèi)容預(yù)告:
想獲取工程的同學(xué)可以關(guān)注超級英雄吉姆
,在公眾號里發(fā)送gin
,獲取工程。
如果你有更多的想知道的內(nèi)容或者有什么好的建議,可以在評論里回復(fù),或者關(guān)注我的公眾號超級英雄吉姆
,在公眾號留言,我看到后第一時(shí)間回復(fù)。
感謝各位的閱讀,以上就是“如何使用golang web框架Gin”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何使用golang web框架Gin這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。