In diesem Artikel untersuchen wir, wie man einen HTTP-Request-Handler in entwirft Verwenden Sie das Gin-Framework, um sowohl JSON-Daten als auch eine Bilddatei zu akzeptieren, die als Teil einer Multipart-/Formulardatenanforderung gesendet wird.
Wir beginnen mit der Definition des Anforderungshandlers UpdateProfile() mit einer Struktur, die das erwartete Anforderungstextformat definiert:
type request struct { Username string `json:"username" binding:"required,min=4,max=20"` Description string `json:"description" binding:"required,max=100"` } func (h *Handlers) UpdateProfile() gin.HandlerFunc { return func(c *gin.Context) { // ... } }
Um JSON-Daten aus dem Anfragetext zu extrahieren, verwenden wir c.BindJSON() und stellen einen Zeiger auf die Anfrage bereit struct:
var updateRequest request if err := c.BindJSON(&updateRequest); err != nil { // Handle JSON binding errors ... }
Um die Bilddatei zu analysieren, verwenden wir c.FormFile():
avatar, err := c.FormFile("avatar") if err != nil { // Handle file parsing errors ... }
Wenn wir auf einen Fehler wie „ungültiges Zeichen '-' in“ stoßen „Numerisches Literal“ wird wahrscheinlich durch den Versuch verursacht, JSON zu analysieren, während der Anforderungstext auch eine Grenze für Multipart-/Formulardaten enthält. Wir können stattdessen den binding.FormMultipart-Modus explizit angeben:
// c.ShouldBind will choose binding.FormMultipart based on the Content-Type header. // We call c.ShouldBindWith to make it explicitly. if err := c.ShouldBindWith(&updateRequest, binding.FormMultipart); err != nil { // Handle binding errors ... }
Wenn XML oder YAML neben JSON im Multipart/Formular erwartet wird- Datenanforderung können wir sie manuell analysieren, zum Beispiel:
var event struct { At time.Time `xml:"time" binding:"required"` Player string `xml:"player" binding:"required"` Action string `xml:"action" binding:"required"` } if err := binding.XML.BindBody([]byte(updateRequest.Event), &event); err != nil { // Handle binding errors ... }
Von Wenn Sie die besprochenen Techniken befolgen, können Sie mit Gin sowohl JSON-Daten als auch hochgeladene Bilder innerhalb einer einzigen Multipart-/Formulardatenanforderung in Go effektiv analysieren. Denken Sie daran, mögliche Bindungsfehler angemessen zu behandeln.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Gin in Go mit JSON- und Bilddaten in Multipart-/Formulardatenanfragen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!