Maison > développement back-end > Golang > Simplifier la validation des chaînes dans Go : présentation de validatorgo

Simplifier la validation des chaînes dans Go : présentation de validatorgo

Linda Hamilton
Libérer: 2024-11-14 20:20:02
original
496 Les gens l'ont consulté

Simplifying String Validation in Go: Introducing validatorgo

Une bibliothèque de validateurs et de désinfectants de chaînes, basée sur la bibliothèque js validator.js

Pourquoi choisir validateurgo ?

Pourquoi ne pas utiliser les bibliothèques Go populaires comme Package Validator ou Govalidator ? Bien que les deux bibliothèques soient bien connues, validatorgo se concentre sur la validation de chaînes autonome et fournit une vaste collection de validateurs personnalisables inspirés de validator.js, qu'aucune de ces bibliothèques Go n'implémente pleinement.

Voici comment validatorgo se démarque de go-playground/validator et govalidator :


1. Comparé au go-playground/validateur

  • Validation directe des chaînes : go-playground/validator est principalement conçu pour valider les champs de structure à l'aide de balises, ce qui est idéal pour gérer des données JSON ou basées sur une structure. Cependant, il n'est pas conçu pour valider des chaînes individuelles, ce que ValidatorGo fait de manière transparente, sans avoir besoin de balises struct ou de configuration supplémentaire.

  • Performance : go-playground/validator s'appuie sur la réflexion pour inspecter dynamiquement les balises struct. Bien que puissante, la réflexion peut entraîner une surcharge de performances, en particulier lorsque des structures de données volumineuses ou complexes sont validées. validatorgo évite la réflexion, ce qui améliore les performances, la rendant plus rapide et plus efficace pour les scénarios où des validations à champ unique sont nécessaires.


2. Comparé à asaskevich/govalidator

  • Personnalisation et flexibilité : govalidator fournit une gamme de validateurs pour les chaînes, mais validatorgo améliore la flexibilité en autorisant des options et des configurations spécifiques pour les validateurs individuels. Par exemple, les formats de date ou les spécifications locales peuvent être personnalisés, donnant aux développeurs plus de contrôle sur les règles de validation adaptées aux besoins du projet.

Motivation du projet

J'ai créé validatorgo pour servir de dépendance à une autre bibliothèque Go appelée ginvalidator, qui valide les requêtes HTTP dans les applications Web Go. Inspiré par express-validator, la bibliothèque de validation populaire pour Node.js et Express, ValidatorGo comble une lacune dans l'écosystème Go pour une validation de chaîne efficace, personnalisable et simple. Étant donné que les autres bibliothèques étaient soit excessives, manquaient de fonctionnalités ou ne répondaient pas à mon cas d'utilisation, j'ai construit validatorgo pour offrir une solution pratique.

Installation

Utiliser aller chercher.

 go get github.com/bube054/validatorgo
Copier après la connexion
Copier après la connexion
Copier après la connexion

Importez ensuite le package dans votre propre code.

 import (
   "fmt"
   "github.com/bube054/validatorgo"
 )
Copier après la connexion
Copier après la connexion
Copier après la connexion

Si vous n'êtes pas satisfait de l'utilisation du nom long du package validateurgo, vous pouvez le faire.

 go get github.com/bube054/validatorgo
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exemple de validateur simple

 import (
   "fmt"
   "github.com/bube054/validatorgo"
 )
Copier après la connexion
Copier après la connexion
Copier après la connexion

Quelques validateurs

Vous trouverez ci-dessous une liste de validateurs fournis par le package validatorgo, qui couvre différents formats et types de chaînes, ce qui le rend polyvalent pour de multiples besoins de validation.

Validateur Description
Contient Vérifie si une chaîne contient une sous-chaîne spécifiée.
Égal Valide si une chaîne est exactement égale à une chaîne de comparaison.
IsAbaRouting Vérifie si la chaîne est un numéro de routage ABA valide (comptes bancaires américains).
EstAprès Valide si une chaîne de date est postérieure à une date spécifiée.
EstAlpha Garantit que la chaîne ne contient que des lettres (a-zA-Z).
EstAlphanumérique Valide si une chaîne contient uniquement des lettres et des chiffres.
EstAscii Vérifie si la chaîne contient uniquement des caractères ASCII.
IsBase32 Vérifie si la chaîne est une valeur codée en Base32 valide.
IsBase64 Valide si une chaîne est encodée Base64.
EstAvant S'assure que la date est antérieure à une date spécifiée.
EstBooléen Vérifie si la chaîne est « vraie » ou « fausse ».
IsCreditCard Valide si la chaîne est un numéro de carte de crédit valide.
IsCurrency Vérifie si la chaîne est un format monétaire valide.
EstDate Valide si une chaîne est une date valide.
EstDécimal Assure que la chaîne représente un nombre décimal valide.
EstEmail Vérifie si la chaîne est un format d'adresse e-mail valide.
EstVide Valide si une chaîne est vide.
EstFQDN Vérifie si la chaîne est un nom de domaine complet.
EstFloat Assure que la chaîne représente un nombre à virgule flottante.
IsHexColor Valide si une chaîne est une couleur hexadécimale valide (par exemple, #FFFFFF).
IsIP Vérifie si la chaîne est une adresse IP valide (IPv4 ou IPv6).
EstISO8601 Valide si la chaîne est au format de date ISO8601.
EstLongueur Vérifie si la longueur de la chaîne se situe dans une plage spécifiée.
IsMimeType Valide si la chaîne est un type MIME valide.
EstMobilePhone Vérifie si la chaîne est un numéro de téléphone mobile valide pour les paramètres régionaux spécifiés.
EstMongoID Valide si la chaîne est un ObjectID MongoDB valide.
EstNumérique Garantit que la chaîne ne contient que des caractères numériques.
IsPostalCode Vérifie si la chaîne est un code postal valide pour les paramètres régionaux spécifiés.
EstRFC3339 Valide si la chaîne est au format de date RFC3339.
EstSlug Vérifie si la chaîne est compatible avec les URL (uniquement les lettres, les chiffres et les tirets).
IsStrongPassword Garantit que la chaîne répond aux exigences courantes en matière de force des mots de passe.
EstURL Valide si la chaîne est une URL.
EstUUID Vérifie si la chaîne est un UUID valide (versions 1 à 5).
IsUpperCase Assure que la chaîne est entièrement en majuscules.
Est-ce que la TVA Vérifie si la chaîne est un numéro de TVA valide pour les pays spécifiés.
Matchs Valide si la chaîne correspond à une expression régulière spécifiée.

Ce tableau devrait couvrir la plupart des validateurs actuellement disponibles dans validatorgo. Assurez-vous de vous référer à la documentation du package pour une utilisation plus détaillée de chaque validateur.

⚠ Attention

Lorsque vous utilisez un validateur qui nécessite une structure d'options (soit un pointeur, soit un non-pointeur), fournissez toujours explicitement les valeurs de tous les champs de structure.
Contrairement à validator.js, où les champs manquants sont automatiquement définis par défaut, Go utilise des types stricts.
Cela signifie que les valeurs manquantes seront par défaut false pour les booléens, 0 pour les types numériques, etc.
Ne pas spécifier tous les champs pourrait entraîner un comportement inattendu si vous êtes habitué à la version JavaScript.

Exemples

 go get github.com/bube054/validatorgo
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exemple simple de désinfectant

 import (
   "fmt"
   "github.com/bube054/validatorgo"
 )
Copier après la connexion
Copier après la connexion
Copier après la connexion

Désinfectants

Sanitizer Description
Trim Removes whitespace from both ends of the string.
LTrim Removes whitespace from the left side of the string.
RTrim Removes whitespace from the right side of the string.
ToLower Converts the entire string to lowercase.
ToUpper Converts the entire string to uppercase.
Escape Escapes HTML characters in the string to prevent injection attacks.
Unescape Reverts escaped HTML characters back to normal characters.
NormalizeEmail Standardizes an email address, e.g., removing dots in Gmail addresses.
Blacklist Removes characters from the string that match specified characters or patterns.
Whitelist Retains only characters in the string that match specified characters or patterns.
Replace Replaces occurrences of a substring with a specified replacement.
StripLow Removes control characters, optionally allowing some specified ones.
TrimSpace Trims all types of whitespace from both ends of the string.
ToBoolean Converts common truthy and falsy values in strings into boolean true or false.
ToInt Converts a numeric string into an integer, if possible.
ToFloat Converts a numeric string into a floating-point number, if possible.

Ces désinfectants sont souvent utilisés pour garantir la cohérence et la sécurité des données en supprimant ou en modifiant les caractères potentiellement indésirables ou dangereux.

Assurez-vous de vous référer à la documentation officielle de Validatorgo pour des implémentations spécifiques et des exemples de chaque désinfectant.

Résumé

validatorgo est le choix idéal si vous avez besoin de :

  • Validations efficaces et sans réflexion pour des champs individuels sans les coûts de performance associés à la réflexion basée sur la structure.
  • Options de validation hautement personnalisables qui s'alignent sur les formats de données modernes, offrant la même robustesse que validator.js.

Avec validatorgo, vous obtenez un outil spécialement conçu pour la validation de chaînes, prenant en charge les exigences des applications autonomes et Web dans Go.

Mainteneurs

  • bube054 - Attah Gbubemi David (auteur)

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!

source:dev.to
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 articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal