首页 > 其他 > 详细

go的中间件

时间:2019-07-15 18:02:11      阅读:156      评论:0      收藏:0      [点我收藏+]
package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    "log"
    "net/http"
)

func middleware1() gin.HandlerFunc{
    return func (c *gin.Context){
        log.Print("middleware1-1")

        c.Next()

        log.Print("middleware1-2")
    }
}

func middleware2() gin.HandlerFunc{
    return func (c *gin.Context){
        log.Print("middleware2-1")

        c.Next()

        log.Print("middleware2-2")
    }
}

func get(c *gin.Context){
    fmt.Println("handel func")
    c.JSON(http.StatusOK,gin.H{"name":"zh"})
}

func main(){
    router:=gin.New()
    router.Use(middleware1())
    router.Use(middleware2())

    router.GET("/v1",get)

    router.Run("127.0.0.1:8888")
}
//输出
2019/07/15 17:19:50 middleware1-1
2019/07/15 17:19:50 middleware2-1
handel func
2019/07/15 17:19:50 middleware2-2
2019/07/15 17:19:50 middleware1-2

执行顺序是:middleware1 执行到c.next()  然后调转到下一个middleware2,middleware2执行到c.next(),跳转到路由对应的函数get(),该函数执行完之后,回到middleware2剩下没执行的代码,middleware2执行完之后,就到了middleware1执行它自己剩下没执行的代码。

go的中间件

原文:https://www.cnblogs.com/zhao1070285683/p/11190270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!