Gin を使用して Golang のルーター ハンドラーに引数を渡す
Gin Web フレームワークを使用して Golang で RESTful API を開発する場合、次のようなニーズが発生する可能性があります。ルート ハンドラーに引数を渡します。これは、データベース接続などのリソースをルート間で再利用する場合に便利です。
ルート ハンドラーに引数を渡すには、次の 2 つの一般的な方法があります:
クロージャを使用する例を次に示します。
// SomeHandler returns a `func(*gin.Context)` to satisfy Gin's router methods // db is an example argument that you want to pass down to the handler func SomeHandler(db *sql.DB) gin.HandlerFunc { fn := func(c *gin.Context) { // Your handler code goes in here // You now have access to the db variable // Example request handling rows, err := db.Query(...) c.String(200, results) } return gin.HandlerFunc(fn) } func main() { db, err := sql.Open(...) // Handle error router := gin.Default() router.GET("/test", SomeHandler(db)) router.Run(":8080") }
このシナリオでは、 SomeHandler 関数は、実際のルート ハンドラーをラップするクロージャを作成します。クロージャは db 変数をキャプチャし、ハンドラーがそれにアクセスできるようにします。
この手法は、ルート ハンドラーに渡す必要があるあらゆるタイプの引数に適用できることに注意してください。
以上がGolangでGinルーターハンドラーに引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。