Heim > Backend-Entwicklung > Golang > Wie gehe ich mit Gin in Go mit JSON- und Bilddaten in Multipart-/Formulardatenanfragen um?

Wie gehe ich mit Gin in Go mit JSON- und Bilddaten in Multipart-/Formulardatenanfragen um?

Patricia Arquette
Freigeben: 2024-11-21 01:56:15
Original
969 Leute haben es durchsucht

How to Handle JSON and Image Data in Multipart/Form-Data Requests with Gin in Go?

Empfangen von JSON- und Bilddaten mit Gin in Go

Kurzbeschreibung

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.

Einrichtung der Anforderungshandler

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) {
        // ...
    }
}
Nach dem Login kopieren

JSON mit c.BindJSON() analysieren

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

Bild mit c.FormFile() analysieren

Um die Bilddatei zu analysieren, verwenden wir c.FormFile():

avatar, err := c.FormFile("avatar")
if err != nil {
    // Handle file parsing errors
    ...
}
Nach dem Login kopieren

Fehler: „ungültiges Zeichen '-' im numerischen Literal“

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

XML oder YAML aus Multipart-/Formulardaten analysieren

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

Schlussfolgerung

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!

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