Mehrmaliges Abrufen des Anforderungstexts in der Go-Gin-Middleware
In Go-Gin, einem Web-Framework, können Entwickler auf ein Szenario stoßen, in dem sie Sie müssen den Text einer Anfrage mehrmals lesen. Dies wird erforderlich, wenn die Körperdaten zu Validierungszwecken verwendet und später an nachfolgende Funktionen weitergegeben werden.
Ein Ansatz zur Lösung dieses Problems besteht darin, den Körper vor der Durchführung der Validierung in eine Variable einzulesen und den Körper dann wieder in seinen ursprünglichen Zustand zu versetzen Originalzustand, bevor Sie mit der nächsten Funktion fortfahren:
func SignupValidator(c *gin.Context) { var bodyBytes []byte var bodyBytesCopy []byte if c.Request.Body != nil { bodyBytes, _ = ioutil.ReadAll(c.Request.Body) } copy(bodyBytesCopy, bodyBytes) // Save body for later use var user entity.User if err := c.ShouldBindJSON(&user); err != nil { // Validation code c.Abort() return } c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytesCopy)) // Restore original body c.Next() }
Dieser Ansatz verwendet die Funktion ioutil.ReadAll, um den Hauptteil des Originalstreams zu lesen und erstellt dann eine Kopie davon zur Verwendung für die Validierung. Der ursprüngliche Körper wird dann wiederhergestellt, damit nachfolgende Funktionen darauf zugreifen können.
Das obige ist der detaillierte Inhalt vonWie kann ich den Anforderungstext in der Go-Gin-Middleware mehrmals lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!