美文网首页
go语言gin框架的学习使用

go语言gin框架的学习使用

作者: xyt001 | 来源:发表于2019-01-06 16:26 被阅读0次

    前言:

    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
    }
    
    1. 上面讲了 gin注册 GET 接口 和POST 接口.
    2. getapi 和postapi 这个接口演示了怎么 获得 http 的get参数 和 post参数 .
    3. 当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 有效.

    总结:

    大概就是这么多了,一起加油学习.

    相关文章

      网友评论

          本文标题:go语言gin框架的学习使用

          本文链接:https://www.haomeiwen.com/subject/akpsrqtx.html