종속성 주입을 사용하여 Gin 라우터 핸들러에 인수 전달
Golang에서 웹 애플리케이션의 종속성을 관리하는 일반적인 방법은 종속성 주입을 통한 것입니다. . 이 기술을 사용하면 전역 변수를 사용하거나 함수 시그니처를 직접 수정하지 않고도 핸들러에 인수를 전달할 수 있습니다.
클로저 사용
한 가지 접근 방식은 클로저를 활용하여 핸들러를 래핑하는 것입니다. 원하는 종속성으로 작동합니다. 클로저는 종속성을 캡슐화하여 호출 시 핸들러에 전달할 수 있도록 합니다.
// SomeHandler encapsulates the DB connection and returns a handler function func SomeHandler(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { // Use the db connection within the handler rows, err := db.Query(...) if err != nil { c.JSON(http.StatusInternalServerError, err) return } c.JSON(http.StatusOK, rows) } } func main() { db, err := sql.Open(...) router := gin.Default() router.GET("/test", SomeHandler(db)) }
미들웨어 사용
미들웨어는 핸들러에 인수를 전달하기 위한 또 다른 옵션입니다. 미들웨어 기능은 실제 핸들러 이전에 실행되며 요청 컨텍스트를 수정하거나 종속성을 주입할 수 있습니다.
// DBMiddleware injects the DB connection into the context func DBMiddleware(db *sql.DB) gin.HandlerFunc { return func(c *gin.Context) { c.Set("db", db) c.Next() } } func SomeHandler(c *gin.Context) { // Retrieve the DB connection from the context db := c.MustGet("db").(*sql.DB) // Use the db connection within the handler } func main() { db, err := sql.Open(...) router := gin.Default() router.Use(DBMiddleware(db)) router.GET("/test", SomeHandler) }
종속성 주입 기술을 활용하면 Gin에 인수를 효과적으로 전달하는 동시에 전역 변수 오염을 방지하고 깔끔한 코드 분리를 유지할 수 있습니다. 라우터 핸들러.
위 내용은 Go에서 Gin 라우터 핸들러에 종속성을 어떻게 주입할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!