php小編香蕉為您帶來關於Golang和Gin Web框架的精彩內容。在使用Gin編寫Web應用程式時,我們經常需要在router.Run()之後執行一些程式碼。這些程式碼可能包括資料庫連線、快取初始化等操作。本文將詳細介紹如何在Gin框架中實作在router.Run()之後執行程式碼的方法,幫助您更能掌握Gin框架的使用技巧。
我對 go 還很陌生,所以如果這是顯而易見的事情,請原諒。
我正忙著在 go 中寫一些用於 oauth 2.0 身份驗證的程式碼。這部分意味著我需要有一個可用的回調 url。在我的程式碼中,我需要建立一個回調端點,一旦啟動並運行,我需要呼叫一個授權端點,然後該端點將連接到我的回調端點。
我的問題是,在 gin 中呼叫 run() 會阻止我的執行,因此在回呼端點啟動並運行後我無法進行任何進一步的授權。有沒有辦法在單獨的 goroutine 中運行此程式碼,以便我可以隨後完成授權流程?
這是我的主函數中的程式碼的粗略範例:
r := gin.Default() //ReqHandler is an HtttpHandler func r.GET("/redirect", ReqHandler) r.Run(":5001") ContinueAuth()
在主 goroutine 中建立一個監聽器。在 goroutine 中啟動 http 伺服器。繼續主 goroutine 中的身份驗證流程。
r := gin.Default() r.GET("/redirect", ReqHandler) l, err := net.Listen("tcp", ":5001") if err != nil { log.Fatal(err) } go func() { log.Fatal(r.RunListener(l)) }() ContinueAuth() select {} // wait forever
在主 goroutine 中建立偵聽器可確保偵聽器已準備好從身分驗證流程中進行回呼。
以上是Golang 和 Gin Web 框架 - 在 router.Run() 之後執行程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!