<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Baa 中間件 baa 支持通過 `中間件` 機制注入請求過程,實現類似插件的功能。 根據注冊的順序依次執行,在整個執行過程中通過共享 `Context` 來實現數據傳遞和流程控制。 多個中間件的交替運行以 `Context.Next()` 和 `Context.Break()` 方法來控制和轉換。 > 路由執行時,中間件和路由方法會組成鏈式操作,中間件優先路由方法先進入執行。 ## 編寫中間件 ``` func (b *Baa) Use(m ...Middleware) ``` 通過 `Use` 方法就可以注冊一個中間件,接收多個 `Middleware` 類型。 ``` type Middleware interface{} ``` 舉個例子 ``` package main import ( "time" "gopkg.in/baa.v1" ) func main() { app := baa.Default() app.Use(func(c *baa.Context) { // 進入,記錄時間 start := time.Now() // 接著執行其他中間件 c.Next() // 執行完其他的,最后,輸出請求日志 c.Baa().Logger().Printf("%s %s %s %v %v", c.RemoteAddr(), c.Req.Method, c.URL(false), c.Resp.Status(), time.Since(start)) }) app.Get("/", func(c *baa.Context) { c.String(200, "Hello, 世界") }) app.Run(":1323") } ``` 看上面的例子,整個中間件只有三句代碼,要說明的是,輸出日志放在了 `c.Next()` 之后執行時為了獲得業務的執行時間,并沒有要求必須放在那兒,只要有 `c.Next()` 就可以了。 最后,在中間件過程中,如果要中斷路由操作提前退出,可以使用 `c.Break()`。 > 其實,上面的示例就是我們的 [accesslog](https://github.com/baa-middleware/accesslog) 中間件。 ## 使用中間件 我們已經編寫了一些常用的中間件,可以直接引入使用。 1. import 2. Use 使用示例: ``` package main import ( "github.com/baa-middleware/accesslog" "gopkg.in/baa.v1" ) func main() { app := baa.Default() app.Use(accesslog.Logger()) app.Get("/", func(c *baa.Context) { c.String(200, "Hello, 世界") }) app.Run(":1323") } ``` 不同的中間件在引入的時候,可能有不同的參數,注意看各個組件部分的文檔介紹。
                  <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>

                              哎呀哎呀视频在线观看