Mempermudahkan Pengesahan Rentetan dalam Go: Memperkenalkan validatorgo

Linda Hamilton
Lepaskan: 2024-11-14 20:20:02
asal
450 orang telah melayarinya

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 en termes 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
Salin selepas log masuk

Importez ensuite le package dans votre propre code.

 import (
   "fmt"
   "github.com/bube054/validatorgo"
 )
Salin selepas log masuk

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

 import (
   "fmt"
   vgo "github.com/bube054/validatorgo"
 )
Salin selepas log masuk

Simple validator example

 func main(){
   id := "5f2a6c69e1d7a4e0077b4e6b"
   validId := vgo.IsMongoID(id)
   fmt.Println(validId) // true
 }
Salin selepas log masuk

Some Validators

Below is a list of validators provided by the validatorgo package, which covers various string formats and types, making it versatile for multiple validation needs.

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.
IsURL Validates if the string is a URL.
IsUUID Checks if the string is a valid UUID (versions 1-5).
IsUpperCase Ensures the string is all uppercase.
IsVAT Checks if the string is a valid VAT number for specified countries.
Matches Validates if the string matches a specified regular expression.

This table should cover most validators currently available in validatorgo. Make sure to refer to the package's documentation for more detailed usage of each validator.

⚠ Caution

When using a validator that requires an options struct (either a pointer or non-pointer), always provide values for all the struct fields explicitly.
Unlike in validator.js, where missing fields are automatically set to defaults, Go uses strict types.
This means missing values will default to false for booleans, 0 for number types, etc.
Not specifying all fields could lead to unexpected behavior if you're used to the JavaScript version.

Examples

  // do this (using the default options specified in the docs)
  ok := validatorgo.IsFQDN("example", nil)

  // or this (explicitly setting all possible fields for the structs)
  ok := validatorgo.IsFQDN("example", &validatorgo.IsFQDNOpts{
    RequireTld: false,
    AllowUnderscores: false,
    AllowTrailingDot: true,
    AllowNumericTld: false,
    IgnoreMaxLength: true
  })

  // but rarely this(not explicitly setting all possible fields)
  ok := validatorgo.IsFQDN("example", &validatorgo.IsFQDNOpts{ RequireTld: false, })
Salin selepas log masuk

Simple sanitizer example

  import (
   "fmt"
   "github.com/bube054/validatorgo/sanitizer"
 )

 func main(){
   str := sanitizer.Whitelist("Hello123 World!", "a-zA-Z")
   fmt.Println(str) // "HelloWorld"
 }
Salin selepas log masuk

Sanitizers

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.

Pembersih ini sering digunakan untuk memastikan konsistensi dan keselamatan data dengan menanggalkan atau mengubah suai aksara yang mungkin tidak diingini atau berbahaya.

Pastikan anda merujuk kepada dokumentasi rasmi validatorgo untuk pelaksanaan dan contoh khusus setiap sanitizer.

Ringkasan

validatorgo ialah pilihan ideal jika anda memerlukan:

  • Pengesahan yang cekap, bebas pantulan untuk medan individu tanpa kos prestasi yang dikaitkan dengan pantulan berasaskan struktur.
  • Pilihan pengesahan Sangat disesuaikan yang selaras dengan format data moden, memberikan keteguhan yang sama seperti validator.js.

Dengan validatorgo, anda mendapat alat yang direka khusus untuk pengesahan rentetan, menyokong kedua-dua keperluan aplikasi kendiri dan web dalam Go.

Penyelenggara

  • bube054 - Attah Gbubemi David (pengarang)

Atas ialah kandungan terperinci Mempermudahkan Pengesahan Rentetan dalam Go: Memperkenalkan validatorgo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan