前言:
gin 是go语言 的一款非常优秀的 web框架, 有点瑞士军刀的感觉. 简单精悍!我们来分享一下 gin的简单使用吧.
安装:
cmd中运行 go get github.com/gin-gonic/gin
即可.
gin的简单使用:
package main
import "github.com/gin-gonic/gin"
func getApi (c *gin.Context){
fmt.Println(c.Query("id"))
c.String(http.StatusOK,"ok")
}
func postApi (c *gin.Context){
fmt.Println(c.PostForm("id"))
c.String(http.StatusOK,"ok")
}
func postjson (c *gin.Context) {
var data = &struct {
Name string `json:"title"`
}{}
c.BindJSON(data)
fmt.Println(data)
c.String(http.StatusOK,"ok")
}
func main() {
r := gin.Default()
r.GET("/getApi ",getApi )//注册接口
r.POST("/postApi ",postApi )//注册接口
r.POST("/postjson ",postjson )//注册接口
r.Run() // listen and serve on 0.0.0.0:8080
}
- 上面讲了 gin注册 GET 接口 和POST 接口.
- getapi 和postapi 这个接口演示了怎么 获得 http 的get参数 和 post参数 .
- 当post 直接发送 json 数据到服务器时,可以用 bindjson 来解析.
gin的中间件:
中间件的意思就是,对一组api的统一操作, 可以把逻辑 提取出来. 比如有一组 api是 用户登入后的操作,我们就需要在每个api 前都 进行权限的验证,有了 中间件后,我们只需要创建一个中间件,在里面写 权限的验证,然后把 这个中间件绑定到 那一组api上即可.
中间件有一般两种写法:
第一种:
//全局中间件 允许跨域
func GlobalMiddleware (c *gin.Context) {
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token")
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
c.Header("Access-Control-Allow-Credentials", "true")
c.Next()
}
第二种:
//全局中间件 允许跨域
func GlobalMiddleware (c *gin.Context) {
return func(c *gin.Context) {
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Access-Control-Allow-Headers", "Content-Type,AccessToken,X-CSRF-Token, Authorization, Token")
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
c.Header("Access-Control-Allow-Credentials", "true")
c.Next()
fmt.Println("after")
}
}
个人感觉没啥区别,如果有区别的话,请留言教教我谢谢==…..
中间件的注册:
func Register() {
r := gin.Default()
r.GET("/getApi ",getApi )//注册接口
r.POST("/postApi ",postApi )//注册接口
r.POST("/postjson ",postjson )//注册接口
r.Use(GlobalMiddleware)
}
func Register1() {
r := gin.Default()
r.GET("/getApi ",getApi )//注册接口
group:= r.Group("/post", GlobalMiddleware)
group.POST("/postApi ",postApi )//注册接口
group.POST("/postjson ",postjson )//注册接口
}
以上是两种注册中间件的方式,第一种 是全局 api的中间件 .就是这个中间件对所有api都有效.第二种是 只对 当前的 group的api 有效.
总结:
大概就是这么多了,一起加油学习.