文章目录
缘起
前几天无聊,去图书馆,看书的时候,突然发现了一本《Go 编程语言》.随手一翻,好家伙,这不正是我的入门语言
C \ C++
的升级版吗,然后就30分钟入了个小门。刚好今天无聊,就来尝试一下Gin
,(一个Go的Web微型框架)。等我再多学几天,再来对比一下,
gin
跟python的Flask,
以及Node
的Koa
的差别。
初探
talk is cheap , show me the code
- 下载
gin
go get -u github.com/gin-gonic/gin
这里如果没有设置代理的话,可能会报
go get: module github.com/kardianos/govendor: Get "https://proxy.golang.org/github.com/kardianos/govendor/@v/list": dial tcp 142.251.43.17:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
开梯子也解决不了,运行下面这条指令,设置代理,即可
go env -w GOPROXY=https://goproxy.cn
- 创建
demo
文件夹 - 敲下
hello
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{"hello": "world"}) }) r.Run() }
注意这里,很大概率会遇到这样一个报错
no required module provides package github.com/gin-gonic/gin: go.mod file not found in current directory or any parent directory; see 'go help modules'
运行以下命令,借鉴我就想试试github.com/gin-gonic/gin,为什么死活都run不起来 - Go语言中文网 - Golang中文社区 (studygolang.com)
go mod init gin go mod edit -require github.com/gin-gonic/gin@latest
类似于
node
的
yarn yarn add .
- 运行程序
- 浏览器访问
- 编译器变化
一些基本用法
获取param
以及query
参数
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/hello/:id", func(c *gin.Context) { // 获取单个param参数 id := c.Param("id") // 获取query参数 name := c.Query("name") fmt.Printf("id=%s, name=%s\r\n", id, name) c.JSON(200, gin.H{ "data": "get", // "params":params }) }) r.Run() }
- 启动
- 访问
- 编译器变化
路由分组
类似于
node
的prefix
package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() // 路由分组 v1 := r.Group("v1") { // 可以在代码块里面定义,并比较规范 // 当然如果你想在外面定义也可以,只是没那么规范 v1.GET("/get", func(c *gin.Context) { c.JSON(200, gin.H{ "data": "v1/get", "hello": "world", }) }) v1.GET("/get1", func(c *gin.Context){ c.JSON(200, gin.H{ "data":"v1/get1" }) }) } v1.GET("/hello", func(c *gin.Context) { c.JSON(200, gin.H{ "data": "v1/hello", "hello": "world", }) }) r.Run() }
- 结果
绑定端口
把
r.Run()
改成r.Run(":3000")
即可绑定3000端口启动。
打包
go build
Windows
环境下会生成一个exe
双击打开,即可直接访问,不再需要
go run xx