デフォルトではミドルウェアなし
Ginにはルーターエンジンを作成する2つの方法があり、違いはデフォルトで登録されるミドルウェアにあります。
gin.Default() — LoggerとRecovery付き
gin.Default()は2つのミドルウェアが既に登録されたルーターを作成します:
- Logger — リクエストログをstdoutに書き込みます(メソッド、パス、ステータスコード、レイテンシ)。
- Recovery — ハンドラ内のpanicからリカバリし、500レスポンスを返します。サーバーのクラッシュを防止します。
これは素早く始めるための最も一般的な選択肢です。
gin.New() — 空のエンジン
gin.New()はミドルウェアが一切登録されていない完全に素のルーターを作成します。これは実行するミドルウェアを完全に制御したい場合に便利です。例えば:
- デフォルトのテキストロガーの代わりに構造化ロガー(
slogやzerologなど)を使用したい場合。 - panicリカバリの動作をカスタマイズしたい場合。
- 最小限または特殊なミドルウェアスタックが必要なマイクロサービスを構築する場合。
例
package main
import ( "log" "net/http"
"github.com/gin-gonic/gin")
func main() { // ミドルウェアなしの空のエンジンを作成。 r := gin.New()
// 必要なミドルウェアのみを登録。 r.Use(gin.Recovery())
r.GET("/ping", func(c *gin.Context) { c.String(http.StatusOK, "pong") })
log.Fatal(r.Run(":8080"))}上記の例では、クラッシュを防ぐためにRecoveryミドルウェアが含まれていますが、デフォルトのLoggerミドルウェアは省略されています。独自のロギングミドルウェアに置き換えるか、完全に省略することができます。