Heim > Backend-Entwicklung > Golang > Wie kann ich den Anforderungstext in der Go-Gin-Middleware mehrmals lesen?

Wie kann ich den Anforderungstext in der Go-Gin-Middleware mehrmals lesen?

Barbara Streisand
Freigeben: 2024-12-16 02:20:14
Original
173 Leute haben es durchsucht

How Can I Read the Request Body Multiple Times in Go-Gin Middleware?

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()
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage