Heim  >  Artikel  >  Backend-Entwicklung  >  Golang GIN-Fehler beim Binden von Formulardaten

Golang GIN-Fehler beim Binden von Formulardaten

WBOY
WBOYnach vorne
2024-02-10 13:00:091256Durchsuche

绑定表单数据时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"`
}

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

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

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
    }

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen