go语言gin框架的学习使用

前言:

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 有效.

总结:

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

    原文作者:xyt001
    原文地址: https://www.jianshu.com/p/270c7ce2933d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞