Leerer Anforderungstext in Gin/Golang
Bei der Bearbeitung von POST-Anfragen mit Gin kann es gelegentlich zu einem Problem kommen, bei dem der Anforderungstext scheinbar leer ist leer sein. Dies kann frustrierend sein, insbesondere wenn Sie erwarten, Daten vom Kunden zu erhalten. Ein häufiger Grund für dieses Problem ist der Versuch, den Hauptteil direkt zu drucken.
Gin stellt den Anforderungshauptteil als Schnittstellentyp ReadCloser dar. Beim Drucken des Zeichenfolgenwerts dieser Schnittstelle wird jedoch nicht der tatsächliche Textinhalt angezeigt.
Lösung 1: Zeichenfolge lesen und drucken
Nur zu Demonstrationszwecken, Sie können dies manuell tun Lesen Sie den Text in einen String ein und drucken Sie ihn dann aus:
func events(c *gin.Context) {
x, _ := ioutil.ReadAll(c.Request.Body)
fmt.Printf("%s", string(x))
c.JSON(http.StatusOK, c)
}
Dies ist jedoch nicht der empfohlene Ansatz, da dabei der Hauptinhalt verbraucht wird.
Lösung 2: Bindungen verwenden
Die bevorzugte Zugriffsmethode Der Anforderungstext in Gin besteht darin, Bindungen zu verwenden. Gin bietet integrierte Bindungen für gängige Datenformate wie JSON. Indem Sie eine Struktur definieren, um die erwarteten Daten darzustellen, und dann c.Bind verwenden, können Sie den Körper automatisch analysieren und an Ihre Struktur binden:
type E struct {
Events string
}
func events(c *gin.Context) {
data := &E{}
c.Bind(data)
fmt.Println(data)
c.JSON(http.StatusOK, c)
}
Dieser Ansatz stellt sicher, dass der Anfragetext korrekt analysiert wird und über Ihre definierte Struktur darauf zugegriffen wird.
Zusätzlicher Hinweis
Lesen Sie den Anfragetext vorher manuell Wenn Sie es an eine Struktur binden, wird der Textkörperinhalt verbraucht. Dies bedeutet, dass nachfolgende Aufrufe von c.Bind fehlschlagen. Daher ist es wichtig, entweder die String-Lesetechnik nur zu Debugzwecken zu verwenden (nicht empfohlen) oder Bindungen zu verwenden, um auf konsistente Weise auf den Text zuzugreifen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3