gin的使用
简介
Gin 是一个用 Go 语言编写的高性能 HTTP Web 框架,特别适合需要高并发和快速响应的 Web 应用程序
1
| go get -u github.com/gin-gonic/gin
|
gin框架中的路由
创建gin 路由器
1 2
| r := gin.Default() r.Run(":8080")
|
不同的请求方式
GET
GET请求用于从服务器获取资源,一般为查询语句使用
1
| r.GET("url",Middleware,Callback)
|
POST
POST请求用于新建资源,一般是创建、注册语句使用
1
| r.POST("url",Middleware,Callback)
|
PUT
PUT请求用于更新资源,一般是更新语句使用
1
| r.PUT("url",Middleware,Callback)
|
DELETE
DELETE请求用于删除资源,一般是删除语句使用
1
| r.DELETE("url",Middleware,Callback)
|
请求的数据绑定与数据获取
从url获取参数
1 2 3 4 5 6 7 8 9 10 11
| ctx.Params.Get("id")
ctx.Params.ByName("id")
ctx.DefaultQuery("pageNum", "1")
ctx.Query("id")
|
从请求中绑定数据
1 2 3 4 5 6 7 8
| ctx.Bind(&requestModel) ctx.BindJSON(&requestModel) ctx.BindQuery(&requestModel) ctx.BindXML(&requestModel) ctx.BindYAML(&requestModel)
ctx.ShouldBind(&requestModel)
|
路由分组
1 2 3 4 5 6 7 8
| PostRoutes := r.Group("/posts") PostRoutes.Use(middleware.AuthMiddleware()) postController := controller.NewPostController() PostRoutes.POST("", postController.Create) PostRoutes.PUT("/:id", postController.Update) PostRoutes.GET("/:id", postController.Show) PostRoutes.DELETE("/:id", postController.Delete) PostRoutes.POST("/page/list", postController.PageList)
|
中间件
中间件必须是一个 gin.HandlerFunc 类型
1 2 3 4
| func AuthMiddleware() gin.HandlerFunc { return func(ctx *gin.Context) { } }
|
中间件的Next() 和 Abort()
中间件里面加上 ctx.Next()后,Next()的语句后面先不执行,跳转到后面的中间件和回调函数中执行完后,才执行ctx.Next()后面的语句
1 2 3 4 5 6
| func InitMiddleWareOne(ctx *gin.Context) { fmt.Println("1") ctx.Next() fmt.Println("2") }
|
ctx.Abort()表示终止调用该请求的剩余处理程序
Abort()后,中间件后面的回调函数(包括后面的中间件)不执行了
上下文
gin.Context 表示一个请求的上下文,包含了 HTTP 请求和响应的所有信息,并提供了一系列的方法来简化处理请求和构建响应的过程。
响应
1 2 3 4
| ctx.JOSN(200, gin.H{"key": "value"}) ctx.String(200, "Hello, %s", "world") ctx.Status(200) ctx.Header("Content-Type", "application/json")
|
数据
1 2 3
| ctx.Set("key", "value") ctx.Get("key") ctx.GetHeader("Authorization")
|