Gin基础知识
安装gin以及快速开始
首先在GOPATH目录src下创建所需的项目文件
MacdeMacBook-pro-3:~ mac$ mkdir -p /Users/mac/go/src/github.com/Threadalive/gin_test_project
MacdeMacBook-pro-3:~ mac$ cd $_
这里使用mod进行项目管理,修改GO111MODULE开启mod模式,执行初始化init,并使用go get 命令下载gin项目:
MacdeMacBook-pro-3:gin_test_project mac$ export GO111MODULE=on
MacdeMacBook-pro-3:gin_test_project mac$ go mod init
go: creating new go.mod: module github.com/Threadalive/gin_test_project
MacdeMacBook-pro-3:gin_test_project mac$ go get -v github.com/gin-gonic/gin@1.4
若访问github下载失败 ,可修改代理配置,使用七牛云或阿里云镜像仓库:
MacdeMacBook-pro-3:gin_test_project mac$ go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
下载成功后目录中出现go.mod以及go.sum,这两个文件记录项目的依赖即模块信息。
使用Goland打开项目,即可快速创建简单的helloworld 项目进行测试,使用Get方式接收并反馈。
运行项目,客户端发送请求,得到json格式反馈:
MacdeMacBook-pro-3:gin_test_project mac$ curl -X GET "http://localhost:8080/ping"
{"mseeage":"pong"}
MacdeMacBook-pro-3:gin_test_project mac$
请求路由
- 多种请求
gin框架可接收http请求的各类方法,包括GET、POST、DELETE等等。
可通过直接绑定方法或使用handle函数进行说明,如下:
func main() {
r := gin.Default()
r.GET("/get", func(c *gin.Context) {
c.String(200,"get")
})
r.POST("/post", func(c *gin.Context) {
c.String(200,"post")
})
r.Handle("DELETE","/delete", func(c *gin.Context) {
c.String(200,"delete")
})
//接收任意类型请求方法
r.Any("/any", func(context *gin.Context) {
context.String(200,"any")
})
r.Run()
}
其中Any函数能够接收所有类型的请求。测试如下:
MacdeMacBook-pro-3:gin_curl -X GET "http://localhost:8080/get"
get
MacdeMacBook-pro-3:gin_test_project mac$ curl -X GET "http://localhost:8080/"
get
MacdeMacBook-pro-3:gin_test_project mac$ curl -X POST "http://localhost:8080/post"
post
MacdeMacBook-pro-3:gin_test_project mac$ curl -X DELETE "http://localhost:8080/delete"
delete
MacdeMacBook-pro-3:gin_test_project mac$ curl -X DELETE "http://localhost:8080/any"
any
MacdeMacBook-pro-3:gin_test_project mac$
- 绑定静态文件夹
gin中绑定静态文件夹有3种方式:
- static()
- staticFS()
- staticFile()
新建router_static包,放置静态资源包assets,static,测试代码如下:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
//绑定静态资源路径
r.Static("/assets","./assets")
//绑定静态文件系统
r.StaticFS("/static",http.Dir("static"))
//绑定单个静态文件
r.StaticFile("/favicon.ico","./favicon.ico")
r.Run()
}
客户端访问结果:
MacdeMacBook-pro-3:gin_test_proje