ミドルウェアは、HTTPリクエストのライフサイクルでメインの処理の前または後にコードを実行できる仕組みです。フレームワーク内で全てのリクエストとレスポンスをインターセプトするフックとして理解することができます。
Irisでのミドルウェアの使用
iris
では、Use
メソッドを使用して、ルートにミドルウェアを登録できます。
package main
// パッケージのインポート
import "github.com/kataras/iris/v12"
func main() {
// irisのインスタンスを定義
app := iris.New()
// gzip圧縮ミドルウェアの使用
app.Use(iris.Compression)
// ルートの設定
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Hello <strong>%s</strong>!", "World")
})
// ポートでリスニング
app.Listen(":8080")
}
Irisでのカスタムミドルウェア
// カスタムミドルウェアの関数シグネチャ
func Logger() iris.Handler {
// クロージャを通じてハンドラを返す
return func(ctx iris.Context) {
t := time.Now()
// パラメータの設定
ctx.Values().Set("framework", "iris")
// リクエスト前のロジック
ctx.Next()
// リクエスト後のロジック
latency := time.Since(t)
log.Print(latency)
// 送信されたステータスへのアクセス
status := ctx.GetStatusCode()
log.Println(status)
}
}
func main() {
app := iris.New()
// カスタムミドルウェアの登録
app.Use(Logger())
app.Get("/test", func(ctx iris.Context) {
// ミドルウェアによって設定されたパラメータの読み取り
framework := ctx.Values().GetString("framework")
// 出力は次のようになります: "iris"
log.Println(framework)
})
app.Listen(":8080")
}