Heim >Backend-Entwicklung >Golang >Wie lese ich den Text einer Go-Gin-Anfrage mehrmals?
Go-Gin: Anforderungstext mehrmals lesen
In Go-Gin kann das Lesen des Anforderungstexts schwierig sein, wenn Sie darauf zugreifen müssen es mehrmals. Das Problem tritt auf, wenn Middleware den Anforderungstext ändert, was den späteren Zugriff erschwert.
Stellen Sie sich das folgende Szenario vor: Sie haben eine Validierungs-Middleware, die den Text zur Validierung liest, gefolgt von einem anderen Handler, der den unveränderten Text benötigt. In diesem Fall beeinträchtigen die Änderungen der Middleware den Zugriff des nachfolgenden Handlers auf den Originaltext.
Um dieses Problem zu beheben, können Sie den folgenden Ansatz verwenden:
bodyBytes, _ := ioutil.ReadAll(c.Request.Body)
if err := c.ShouldBindJSON(&user); err != nil { // Validation logic }
c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(ByteBody))
Um diese Lösung im bereitgestellten Code zu implementieren, ersetzen Sie die folgenden Zeilen in der Middleware:
// var bodyBytes []byte // if c.Request.Body != nil { // bodyBytes, _ = ioutil.ReadAll(c.Request.Body) // }
durch:
bodyBytes, _ := ioutil.ReadAll(c.Request.Body) c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))
Das obige ist der detaillierte Inhalt vonWie lese ich den Text einer Go-Gin-Anfrage mehrmals?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!