<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國際加速解決方案。 廣告
                > 在Gin框架中,中間件(Middleware)指的是可以攔截**http請求-響應**生命周期的特殊函數,在請求-響應生命周期中可以注冊多個中間件,每個中間件執行不同的功能,一個中間執行完再輪到下一個中間件執行 > 中間件的常見應用場景如下: > * 請求限速 > * api接口簽名處理 > * 權限校驗 > * 統一錯誤處理 > Gin支持設置全局中間件和針對路由分組設置中間件,設置全局中間件意思就是會攔截所有請求,針對分組路由設置中間件,意思就是僅對這個分組下的路由起作用。 [TOC] ## 使用中間件 ~~~ func main() { r := gin.Default() // 通過use設置全局中間件 // 設置日志中間件,主要用于打印請求日志 r.Use(gin.Logger()) // 設置Recovery中間件,主要用于攔截paic錯誤,不至于導致進程崩掉 r.Use(gin.Recovery()) // 忽略后面代碼 } ~~~ ## 自定義中間件 > 下面通過一個例子,了解如果自定義一個中間件 ~~~ package main // 導入gin包 import ( "github.com/gin-gonic/gin" "log" "time" ) // 自定義個日志中間件 func Logger() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() // 可以通過上下文對象,設置一些依附在上下文對象里面的鍵/值數據 c.Set("example", "12345") // 在這里處理請求到達控制器函數之前的邏輯 // 調用下一個中間件,或者控制器處理函數,具體得看注冊了多少個中間件。 c.Next() // 在這里可以處理請求返回給用戶之前的邏輯 latency := time.Since(t) log.Print("it cost ", latency) // 例如,查詢請求狀態嗎 status := c.Writer.Status() log.Println("the status is ", status) } } func main() { r := gin.Default() // 注冊上面自定義的日志中間件 r.Use(Logger()) r.GET("/test", func(c *gin.Context) { // 查詢我們之前在日志中間件,注入的鍵值數據 example := c.MustGet("example").(string) // it would print: "12345" log.Println("the value is " + example) }) // Listen and serve on 0.0.0.0:8080 r.Run(":8080") } ~~~
                  <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>

                              哎呀哎呀视频在线观看