Go के लिए validator लाइब्रेरी: पूरी गाइड
1. यह क्या है और इसकी आवश्यकता क्यों है
लाइब्रेरी validator (पैकेज का पूरा नाम — github.com/go-playground/validator/v10) Go भाषा में स्ट्रक्चर और अलग-अलग फ़ील्ड को वैलिडेट करने का एक शक्तिशाली और लचीला टूल है। यह आपको सीधे स्ट्रक्चर के टैग में डेटा जाँच के नियमों को घोषणात्मक रूप से परिभाषित करने की अनुमति देता है, जिससे कोड साफ, पढ़ने में आसान और आसानी से बनाए रखने योग्य बनता है। दर्जनों लाइनों की मैन्युअल जाँच (if-else, switch) लिखने के बजाय, आप बस फ़ील्ड में टैग जोड़ते हैं, और लाइब्रेरी आपके लिए सारा काम करती है।
इसकी आवश्यकता क्यों है? किसी भी वेब एप्लिकेशन, API या सेवा में जो उपयोगकर्ता इनपुट के साथ काम करती है, डेटा को प्रोसेस करने से पहले जाँचना बेहद ज़रूरी है। गलत ईमेल, खाली नाम, नकारात्मक उम्र, बहुत लंबा पासवर्ड — ये सब लॉजिक में त्रुटियाँ, कमज़ोरियाँ (SQL-इंजेक्शन, XSS) या सर्वर क्रैश का कारण बन सकते हैं। validator इस समस्या को सुरुचिपूर्ण ढंग से हल करता है: आप एक बार नियम परिभाषित करते हैं, और फिर एक फ़ंक्शन Validate.Struct() को कॉल करते हैं, जो स्वचालित रूप से सभी फ़ील्ड की जाँच करता है।
लाइब्रेरी दर्जनों बिल्ट-इन वैलिडेटर (required, min, max, email, url, uuid, oneof, len और कई अन्य) को सपोर्ट करती है, और आपको अपने कस्टम वैलिडेटर बनाने की भी अनुमति देती है। इसका प्रोडक्शन में सक्रिय रूप से उपयोग किया जाता है, इसमें उत्कृष्ट प्रदर्शन (रिफ्लेक्शन कैशिंग के कारण) है, और यह Gin, Echo और Fiber जैसे लोकप्रिय फ्रेमवर्क के साथ संगत है। यदि आप Go में लिख रहे हैं और boilerplate कोड से बचना चाहते हैं, तो यह लाइब्रेरी एक must-have है।
2. इंस्टॉलेशन
लाइब्रेरी का इंस्टॉलेशन go get के माध्यम से मानक तरीके से किया जाता है। सुनिश्चित करें कि आपके पास Go का वर्शन 1.18 या उससे ऊपर (1.21+ अनुशंसित) इंस्टॉल है।
go get github.com/go-playground/validator/v10
कमांड चलाने के बाद, पैकेज आपके go.mod में जुड़ जाएगा। इसे अपने कोड में इम्पोर्ट करें:
import "github.com/go-playground/validator/v10"
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
चलिए एक सरल उपयोगकर्ता स्ट्रक्चर बनाते हैं और उसके फ़ील्ड की जाँच करते हैं। यह एक न्यूनतम उदाहरण है जो मुख्य विचार को प्रदर्शित करता है।
package main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
// User — वैलिडेशन टैग वाली स्ट्रक्चर
type User struct {
Name string `validate:"required,min=2,max=50"`
Email string `validate:"required,email"`
Age int `validate:"gte=0,lte=150"`
}
func main() {
// वैलिडेटर का इंस्टेंस बनाएँ
validate := validator.New()
// टेस्ट डेटा
user := User{
Name: "A", // बहुत छोटा नाम
Email: "invalid-email", // अमान्य ईमेल
Age: -5, // नकारात्मक उम्र
}
// वैलिडेशन करें
err := validate.Struct(user)
if err != nil {
// सभी त्रुटियों पर लूप करें
for _, err := range err.(validator.ValidationErrors) {
fmt.Printf("फ़ील्ड: %s, त्रुटि: %s, मान: %v\n",
err.Field(), err.Tag(), err.Value())
}
} else {
fmt.Println("वैलिडेशन सफलतापूर्वक पास!")
}
}
प्रोग्राम का आउटपुट:
फ़ील्ड: Name, त्रुटि: min, मान: A
फ़ील्ड: Email, त्रुटि: email, मान: invalid-email
फ़ील्ड: Age, त्रुटि: gte, मान: -5
जैसा कि आप देख सकते हैं, लाइब्रेरी स्वचालित रूप से सभी उल्लंघनों का पता लगाती है और प्रत्येक त्रुटि के बारे में संरचित जानकारी लौटाती है।
4. मुख्य तरीके और फ़ंक्शन
नीचे लाइब्रेरी के 8 प्रमुख तरीके और फ़ंक्शन दिए गए हैं। प्रत्येक के लिए सिग्नेचर, विवरण और एक कार्यशील उदाहरण दिया गया है।
4.1. validator.New()
सिग्नेचर: func New() *Validate
यह क्या करता है: एक नया वैलिडेटर इंस्टेंस बनाता है। यह मुख्य ऑब्जेक्ट है जिसके माध्यम से सभी जाँचें की जाती हैं। पूरे एप्लिकेशन के लिए एक इंस्टेंस बनाने की अनुशंसा की जाती है।