Gin を使用して Go で RESTful API を構築する場合、引数をルート ハンドラーに渡す必要があるシナリオに遭遇する可能性があります。この記事では、これを実現する方法を検討し、さまざまな状況への適合性を評価します。
1 つのアプローチは、グローバル変数を使用して、すべてのアプリケーションで共有される依存関係を保存することです。データベース接続プールなどのルート。ただし、これは密結合やコードの保守が困難になる可能性があるため、通常は推奨されません。
あるいは、クロージャを使用して、受け入れ可能なハンドラ関数を作成することもできます。追加の引数。このアプローチにより、コードが分離された状態に保たれ、依存関係をより柔軟に渡すことができます。
たとえば、引数としてデータベース オブジェクトを必要とするハンドラー関数を考えてみましょう。
import "github.com/gin-gonic/gin" import "database/sql" func SomeHandler(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { // Your handler code goes here } }
この例では、 SomeHandler は、Gin のルーター メソッドを満たす gin.HandlerFunc を返します。返された関数は、次のようにルーターに登録できます。
db, err := sql.Open(...) // handle the error router := gin.Default() router.GET("/test", SomeHandler(db))
クロージャーを利用することで、懸念事項の分離を維持し、グローバル状態を回避しながら、依存関係を明示的に渡すことができます。オプションの引数は Go では直接サポートされていませんが、クロージャは同様の効果を達成するための柔軟なソリューションを提供します。
以上が引数を Jin ルーター ハンドラーに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。