Association et validation des requêtes
ShouldBindJSON, balises d’association et validateur
Association et validation des requêtes est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Liaison du corps de la requête
Gin peut lier du JSON, du XML, des données de formulaire et des chaînes de requête à des structures Go en utilisant l’étiquette de structure binding et les fonctions c.ShouldBind* :
type CreateUserRequest struct {
Name string `json:"name" binding:"required"`
Email string `json:"email" binding:"required,email"`
Age int `json:"age" binding:"gte=0,lte=150"`
}
func createUser(c *gin.Context) {
var req CreateUserRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
}ShouldBind et MustBind
ShouldBind* vous renvoie l’erreur afin que vous puissiez la traiter. Bind* (variante Must) écrit automatiquement une réponse 400 et interrompt le traitement en cas d’erreur ; utilisez ShouldBind pour personnaliser les réponses d’erreur.
Liaison des paramètres de requête
Liez les paramètres de la chaîne de requête à une structure avec c.ShouldBindQuery :
type ListRequest struct {
Page int `form:"page" binding:"gte=1"`
Limit int `form:"limit" binding:"gte=1,lte=100"`
}
var q ListRequest
c.ShouldBindQuery(&q)Liaison des paramètres de chemin
Liez les paramètres de chemin à une structure avec c.ShouldBindUri :
type IDParam struct {
ID int64 `uri:"id" binding:"required,gt=0"`
}
var p IDParam
c.ShouldBindUri(&p)Étiquettes de validation
Gin utilise github.com/go-playground/validator/v10. Parmi les étiquettes courantes : required, email, min, max, gte, lte, len, oneof.
Validateurs personnalisés
Enregistrez une fonction de validation personnalisée avec binding.Validator.Engine() :
validate := binding.Validator.Engine().(*validator.Validate)
validate.RegisterValidation("username", validateUsername)Réponse aux erreurs de validation
Analysez les erreurs du validateur pour construire une réponse facile à comprendre, avec les noms des champs et les messages :
var ve validator.ValidationErrors
if errors.As(err, &ve) {
errs := make([]string, len(ve))
for i, e := range ve {
errs[i] = fmt.Sprintf("%s: %s", e.Field(), e.Tag())
}
c.JSON(400, gin.H{"errors": errs})
}Fichiers de formulaire multipart
Gérez les importations de fichiers avec c.FormFile :
file, _ := c.FormFile("avatar")
c.SaveUploadedFile(file, "./uploads/"+file.Filename)Négociation du type de contenu
ShouldBind de Gin choisit automatiquement la liaison selon le Content-Type (JSON pour application/json, formulaire pour application/x-www-form-urlencoded).
Taille maximale du corps de la requête
Limitez la taille du corps de la requête pour éviter l’épuisement de la mémoire :
r.MaxMultipartMemory = 8 << 20 // 8 MiB for multipartValidation des structures imbriquées
La validation s’exécute récursivement sur les structures imbriquées. Utilisez dive pour valider les éléments d’une tranche :
Tags []string `json:"tags" binding:"required,dive,min=1,max=30"`Vérification rapide
Quelle est la différence entre c.ShouldBindJSON et c.BindJSON dans Gin ?
Récapitulatif : liaison des requêtes
Points clés :
- ShouldBindJSON/ShouldBindQuery/ShouldBindUri pour une liaison typée
- Étiquettes binding:"required,email,gte=0" via go-playground/validator
- Validateurs personnalisés via binding.Validator.Engine()
- Analysez ValidationErrors pour obtenir des messages d’erreur au niveau des champs
Questions Fréquemment Posées
La leçon « Association et validation des requêtes » est-elle gratuite ?
Oui — le texte complet de « Association et validation des requêtes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Association et validation des requêtes » ?
ShouldBindJSON, balises d’association et validateur Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Association et validation des requêtes » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Routeur Gin et groupes de routes
- Association et validation des requêtes
- Assistants de réponse et codes d’état
- Intergiciel Gin : authentification et journalisation