Golang GIN-Fehler beim Binden von Formulardaten

WBOY
Freigeben: 2024-02-10 13:00:09
nach vorne
1256 Leute haben es durchsucht

绑定表单数据时Golang GIN出错

Der PHP-Editor Xinyi bietet Ihnen eine Lösung für das Problem von Fehlern beim Binden von Formulardaten im Golang GIN-Framework. Bei der Verwendung des GIN-Frameworks für die Formulardatenbindung treten manchmal Probleme auf, z. B. die Unfähigkeit, die Formulardaten korrekt zu analysieren. Diese Probleme können durch Parameterbindung, nicht übereinstimmende Datentypen usw. verursacht werden. In diesem Artikel erfahren Sie, wie Sie Formulardaten korrekt binden und häufige Fehler beheben, um Entwicklern dabei zu helfen, das GIN-Framework erfolgreich für Entwicklungsarbeiten zu nutzen.

Frageninhalt

Wenn ich versuche, eine Formulardatenanforderung an eine Struktur zu binden, wird die Fehlermeldung „Schwerwiegender Fehler: Stapelüberlauf“ ausgegeben.

Das ist mein Code. Es gibt nichts zu erklären. Ich beginne mit dem Code, komme aber nicht dahinter.

Struktur

type Wish struct {
    ID                int                `gorm:"primarykey;autoIncrement" json:"id"`
    CreatedAt         time.Time          `json:"created_at"`
    UpdatedAt         time.Time          `json:"updated_at"`
    DeletedAt         gorm.DeletedAt     `gorm:"index" json:"deleted_at"`
    UserID            int                `json:"user_id" form:"user_id"`
    User              *User              `gorm:"foreignKey:UserID" json:"user_data,omitempty"`
    WishTypeID        int                `json:"wish_type_id" form:"wish_type_id"`
    WishType          *WishType          `gorm:"foreignKey:WishTypeID" json:"wish_type_data,omitempty"`
    ProcessTrack      []*ProcessTrack    `gorm:"foreignKey:WishID" json:"process_track,omitempty"`
    VacationDateRange *VacationDateRange `gorm:"foreignKey:WishID" json:"vacation_date_range,omitempty"`
    Content           string             `gorm:"type:varchar(255)" json:"content" form:"content"`
    Status            WishStatus         `gorm:"type:integer" json:"status" form:"status"`
    Files             []*File            `gorm:"polymorphic:Module;polymorphicValue:wish_files" json:"files,omitempty"`
}

Nach dem Login kopieren

Controller

var wish migrations.Wish
    if err := c.Bind(&wish); err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Talep Okunamadı!"})
        return
    }
    c.JSON(200, wish)
    return
Nach dem Login kopieren

Anfrage

Lösung

Ich habe den Controller geändert

type Req struct {
        Content           string                        `form:"content"`
        WishTypeID        int                           `form:"wish_type_id"`
        VacationDateRange *migrations.VacationDateRange `form:"vacation_date_range"`
    }
    err, i, g := authorizer.AuthorizeIt(c, a.Subject, a.Action)
    if err != nil {
        c.JSON(i, g)
        return
    }
    var wishReq Req
    var wish migrations.Wish
    if err := c.Bind(&wishReq); err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Wish can't bind."})
        return
    }
    wish.WishTypeID = wishReq.WishTypeID
    wish.Content = wishReq.Content
    wish.VacationDateRange = wishReq.VacationDateRange
Nach dem Login kopieren

Aber ich verstehe immer noch nicht, warum es nicht der erste Stil sein kann. Ich habe auch die allgemeine Verwendung hinzugefügt. Normalerweise funktioniert es auch.

err, i, g := authorizer.AuthorizeIt(c, a.Subject, a.Action)
    if err != nil {
        c.JSON(i, g)
        return
    }
    var announce mig.Announce

    err = c.Bind(&announce)
    if err != nil {
        c.JSON(400, gin.H{"error": err.Error(), "message": "Announce can't bind. Error Code: AN-CRT-20"})
        return
    }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGolang GIN-Fehler beim Binden von Formulardaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!