Wie man den Anfragetext in Go-Gin mehrmals liest
Bei der Validierung von Anfragedaten ist es oft notwendig, den ursprünglichen Anfragetext beizubehalten Weiterverarbeitung. Das mehrmalige Lesen des Textkörpers kann jedoch zu Problemen führen.
Problem:
Der folgende Code liest den Anforderungstext, um eine Validierung durchzuführen, behält ihn jedoch nicht für nachfolgende Funktionsaufrufe bei :
func SignupValidator(c *gin.Context) { var bodyBytes []byte if c.Request.Body != nil { bodyBytes, _ = ioutil.ReadAll(c.Request.Body) } fmt.Println(string(bodyBytes)) // empty c.Next() }
Lösung:
Um auf den Anfragetext mehrfach zuzugreifen Führen Sie mehrmals die folgenden Schritte aus:
func SignupValidator(c *gin.Context) { byteBody, _ := ioutil.ReadAll(c.Request.Body) c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(byteBody)) fmt.Println(string(byteBody)) // contains the request body c.Next() }
Jetzt können nachfolgende Funktionsaufrufe ohne Zugriff auf die Textdaten zugreifen Probleme.
Das obige ist der detaillierte Inhalt vonWie lese ich einen Anforderungstext in Go-Gin mehrmals?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!