Maison> développement back-end> Golang> le corps du texte

Erreur Golang GIN lors de la liaison des données du formulaire

WBOY
Libérer: 2024-02-10 13:00:09
avant
1230 Les gens l'ont consulté

绑定表单数据时Golang GIN出错

php小编新一为大家带来关于Golang GIN框架在绑定表单数据时出错的解决方案。在使用GIN框架进行表单数据绑定时,有时会遇到一些问题,如无法正确解析表单数据。这些问题可能是由于参数绑定、数据类型不匹配等原因导致的。本文将介绍如何正确绑定表单数据并解决常见的错误,帮助开发者顺利使用GIN框架进行开发工作。

问题内容

当我尝试将表单数据请求绑定到结构时,它错误为“致命错误:堆栈溢出”。

这是我的代码。没什么好解释的。我是代码的开始,但无法解决代码。

结构体

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"` }
Copier après la connexion

控制器

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
Copier après la connexion

请求

解决方法

我修改了控制器

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
Copier après la connexion

但我仍然不明白为什么不能作为第一种风格。我也添加了常用用法。它通常也有效。

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 }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!