Wie übergibt man Argumente an router-Handler in Golang mit Gin web-framework?
Ich bin mit Gin, https://gin-gonic.github.io/gin/, zu erstellen Sie eine einfache RESTful-JSON-API mit Golang.
Sind die Wege setup mit so etwas wie dies:
func testRouteHandler(c *gin.Context) {
//do smth
}
func main() {
router := gin.Default()
router.GET("/test", testRouteHandler)
router.Run(":8080")
}
Meine Frage ist wie kann ich den pass runter ein argument für die testRouteHandler Funktion? Zum Beispiel eine gemeinsame Datenbank-Verbindung könnte etwas sein, das man wiederverwenden möchte, wird bei Routen.
Ist der beste Weg, um diese in einer globalen variable? Oder gibt es eine Möglichkeit in der Go pass entlang eine zusätzliche variable, um die testRouteHandler Funktion? Gibt es optionale Argumente für Funktionen in Go?
PS. Ich bin gerade erst in das lernen Gehen, also könnte es etwas offensichtlich, dass ich vermisst 🙂
- Ich denke, Sie sind auf der Suche nach einem HTTP-middleware-Dies ist ein guter Ort, um zu starten nicolasmerouze.com/middlewares-golang-best-practices-examples
- Wie @MIkCode sagte, middlewares sind der Weg zu gehen... werfen Sie einen Blick auf Gin ' s custom-middlewares. github.com/gin-gonic/gin#custom-middleware
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit dem link, den ich gepostet auf Kommentare, die ich erstellt habe, ein einfaches Beispiel.
Dies ist nur eine einfache POC. Aber ich glaube, es ist ein Anfang.
Hoffe, es hilft.
Würde ich vermeiden, Füllung 'application scoped' Abhängigkeiten (z.B. eine DB-connection-pool) in einen Antrag Kontext. Ihre zwei 'einfachste' Optionen sind:
*sql.DB
thread-sicher ist.gin.HandlerFunc
z.B.
Spät, um der Partei, so weit hier ist mein Vorschlag. Incapsulate Methoden in das Objekt mit dem private - /public-vars in:
Okay, ich gebe Euch ein einfaches Beispiel. Es sollte funktionieren. Sie können es verlängern, je nach Ihrem Bedarf
Nun müssen Sie rufen Sie Ihren Behandler, wie unten
http://localhost:8080/test/1/myname