gin笔记

gin.Default() 默认带有中间件(日志和恢复)的路由
gin.New() 不带中间件的路由

router.GET/POST/PUT/DELETE …

martini restful风格

参数获取c *gin.Content

1
2
3
4
5
6
7
8
9
10
uri args
c.Param("balabla")

query args (c.Request.URL.Query().Get("balabala"))
c.Query("balabla")
c.DefaultQuery("balabala", "defaultValue")

form args
c.PostForm("balabala")
c.DefaultPostForm("balabala", "defaultValue")

组路由

1
2
3
g1 := router.Group("/v1")
g1.POST("/login", handler)
g1.POST("logout", handler)

数据绑定

1
2
c.MustBindWith(obj interface{}, b binding.Binding)
c.BindJSON(obj interface{})

中间件
自定义中间件需要返回一个gin.HandlerFunc类型的方法

使用: router.User(MiddleWare())

context api

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
c.ContentType()
c.Cookie()
c.ClientIP()
c.Get(key) / C.Set(key, value) 上下文变量传递
c.GetHeader(key string) 获取请求头
c.Header(key, value) 设置响应头
c.IsWebsocket() 是否是websocket请求

c.Next() 在middleware中使用, 调用后会执行下一个pending中的handler方法
c.Redirect(code int, location string)重定向
c.SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)设置cookie
c.Status(code int) 设置响应状态码
c.JSON(code int, obj interface{}) 响应返回一个json串, 同时设置content-type为application/json
c.String(code int, format string, values ...interface{}) 将string写入响应体重
c.Stream(step func(w io.Writer) bool) 流式返回响应体

您的支持将鼓励我继续创作!