<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 設置默認中間件 ``` r := gin.New() // 沒有中間件 r := gin.Default() //有中間件 ``` ## 三種中間件 ### 全局中間件 ``` r.Use(custromMidd) ``` ### 路由中間件 ``` r.GET("/benchmark", middleware(), benchEndpoint) ``` ### group 路由中間件 ``` authorized := r.Group("/") authorized.Use(AuthRequired()) { authorized.POST("/login", benchEndpoint) } ``` ## 定義中間件的兩種方式 ``` r.Use(customMiddle()) // 方式一 func customMiddle(g *gin.Context) { foo1() g.Next() } // 方式二 func customMiddle() gin.HandlerFunc { Foo() // Foo() 將只執行一次,用于對某些第三方服務器的初始化 return func(c *gin.Context) { foo1() c.Next() } } ``` demo ``` func respondWithError(code int, message string,c *gin.Context) { resp := map[string]string{"error": message} c.JSON(code, resp) c.Abort() } func TokenAuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { token := c.Request.FormValue("api_token") if token == "" { respondWithError(401, "API token required", c) return } if token != os.Getenv("API_TOKEN") { respondWithError(401, "Invalid API token", c) return } c.Next() } } ``` ## 中間件的前置后置 ``` func Logger() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() // Set example variable c.Set("example", "12345") // before request c.Next() // after request latency := time.Since(t) log.Print(latency) // access the status we are sending status := c.Writer.Status() log.Println(status) } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看