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.
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
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!