Der PHP-Editor Banana bietet Ihnen spannende Inhalte zum Golang- und Gin-Web-Framework. Wenn wir Webanwendungen mit Gin schreiben, müssen wir nach router.Run() häufig Code ausführen. Diese Codes können Datenbankverbindungen, Cache-Initialisierung und andere Vorgänge umfassen. In diesem Artikel wird detailliert beschrieben, wie Sie die Methode zum Ausführen von Code nach router.Run() im Gin-Framework implementieren, um Ihnen dabei zu helfen, die Verwendungsfähigkeiten des Gin-Frameworks besser zu beherrschen.
Ich bin ziemlich neu, also entschuldigen Sie mich bitte, wenn das etwas Offensichtliches ist.
Ich bin damit beschäftigt, Code für die OAuth 2.0-Authentifizierung zu schreiben. Ein Teil davon bedeutet, dass ich eine Rückruf-URL zur Verfügung haben muss. In meinem Code muss ich einen Callback-Endpunkt erstellen und sobald er betriebsbereit ist, muss ich einen Autorisierungsendpunkt aufrufen, der dann eine Verbindung zu meinem Callback-Endpunkt herstellt.
Mein Problem ist, dass der Aufruf von run() in Gin meine Ausführung blockiert, sodass ich keine weitere Autorisierung durchführen kann, nachdem der Callback-Endpunkt betriebsbereit ist. Gibt es eine Möglichkeit, diesen Code in einer separaten Goroutine auszuführen, damit ich dann den Autorisierungsablauf abschließen kann?
Hier ist ein grobes Beispiel für den Code in meiner Hauptfunktion:
r := gin.Default() //ReqHandler is an HtttpHandler func r.GET("/redirect", ReqHandler) r.Run(":5001") ContinueAuth()
Erstellen Sie einen Listener in der Haupt-Goroutine. Starten Sie den HTTP-Server in Goroutine. Setzen Sie den Authentifizierungsablauf in der Haupt-Goroutine fort.
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
Durch das Erstellen des Listeners in der Haupt-Goroutine wird sichergestellt, dass der Listener bereit ist, vom Authentifizierungsfluss zurückzurufen.
Das obige ist der detaillierte Inhalt vonGolang und Gin Web Framework – Code nach router.Run() ausführen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!