gin配置
1. 创建项目并初始化
创建项目

初始化并生成go.mod
go mod init just.com/ginStudy01
此处的just.com一般指公司名,,可以自行定义,/ginStudy01指项目名。

2. 安装gin依赖
go get -u github.com/gin-gonic/gin安装后会生成如上图的依赖。但此时main.go文件里还不能正常导包。需要增加以下操作


3. 测试样例测试
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}运行
go run main.go
从浏览器中输入 localhost:8080/ping

代码解读
r := gin.Default()
此处生成了一个实例,该实例为WSGI应用程序
WSGI应用程序
此处参考廖雪峰老师的解析
简而言之,WSGI(Web Server Gateway Interface)主要目的是写动态HTML的过程中,避免接触到TCP连接、HTTP原始请求和响应格式。于是通过一个统一的接口来让后端程序专心写web业务。
接下来看第二段
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})此处的/ping为路径,你需要在网页中定位到/ping这个页面才能显示以下信息。
r.Get("/", ...)声明了一个路由,告诉gin什么样的URL能触发传入的函数,这个函数返回我们想要显示在用户浏览器中的信息。
而每个HTTP请求都会包含一个Context对象,Context贯穿整个HTTP请求,包含了所有的上下文信息。
根据源码中的理解,Context是gin最重要的部分,他允许我们在中间件中传递变量、管理流、在请求中验证JSON和给与JSON响应。
gin.H{}
// gin.H定义
// H is a shortcut for map[string]interface{}
type H map[string]interface{}
运行
r.Run() // listen and serve on 0.0.0.0:8080
这里用Run()函数应用在本地服务器上,默认监听端口是8080, 可以传入参数设置端口,例如r.Run(":9999")就运行在9999端口
路由(Route)
gin封装了http库,提供了GET、POST、PUT、PATCH、DELETE和OPTIONS这些请求方式。然后他通过router.method()来绑定路由。
这些方法的使用如同上面main函数里的GET方法一样,
先传入一个relativePath,如:“/ping”, 再传入一个handlers函数,如
func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
}
响应内容格式
留意到这里的c.JSON(),这里返回了一个响应,响应的状态码是200,响应的内容是一个JSON格式。
响应内容格式有以下几种:JSON、XML、YAML、String、HTML。
状态码
gin给不同的状态码定义了不同的变量,例如200也可以写成StatusOK,500可以写成StatusInternalServerError,404可以写成StatusNotFound。
在调用时,我们可以直接调用http.StatusOK来使用
router.GET("/json", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "not found"})
//等价于
//c.JSON(200, gin.H{"message": "not found"})
})
