Go में go-playground/validator के साथ डेटा वैलिडेशन
Go (Golang) में आधुनिक डेवलपमेंट में, इनकमिंग डेटा का वैलिडेशन रिक्वेस्ट, फॉर्म या कॉन्फ़िगरेशन को प्रोसेस करने का एक महत्वपूर्ण चरण है। लाइब्रेरी go-playground/validator स्ट्रक्चर, फील्ड और जटिल नेस्टेड ऑब्जेक्ट्स की जाँच के लिए डी-फैक्टो मानक है। यह वैलिडेशन के लिए नियमों (टैग) का एक शक्तिशाली सेट प्रदान करती है, कस्टम एरर मैसेज, इंटरनेशनलाइज़ेशन और वेब फ्रेमवर्क के साथ इंटीग्रेशन को सपोर्ट करती है।
डेटा वैलिडेशन की आवश्यकता क्यों है?
प्रत्येक फील्ड की मैन्युअल जाँच से कोड डुप्लिकेशन और त्रुटियाँ होती हैं। validator आपको सीधे स्ट्रक्चर टैग में नियमों का वर्णन करने की अनुमति देता है, जिससे कोड साफ, घोषणात्मक और आसानी से बनाए रखने योग्य बनता है। आप टाइप, रेंज, फील्ड की अनिवार्यता, फॉर्मेट (email, URL, UUID) की जाँच कर सकते हैं और यहाँ तक कि क्रॉस-फील्ड तुलना भी कर सकते हैं।
इंस्टॉलेशन
लाइब्रेरी को इंस्टॉल करने के लिए टर्मिनल में निम्न कमांड चलाएँ (Go 1.18+ आवश्यक):
go get github.com/go-playground/validator/v10फिर अपने कोड में पैकेज को इम्पोर्ट करें:
import "github.com/go-playground/validator/v10"मुख्य कार्यक्षमताएँ
- वैलिडेशन टैग:
required,min,max,len,email,url,uuid,oneofऔर दर्जनों अन्य। - कस्टम वैलिडेटर:
RegisterValidationके माध्यम से अपने स्वयं के नियम बनाना। - नेस्टेड स्ट्रक्चर: नेस्टेड ऑब्जेक्ट्स के अंदर फील्ड की जाँच करना।
- एरर मैसेज: विभिन्न भाषाओं में अनुवाद, टेक्स्ट का कस्टमाइज़ेशन।
- बैच वैलिडेशन: ऐरे और स्लाइस की जाँच करना।
Go (Golang) में कोड उदाहरण
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=130"` Role string `validate:"required,oneof=admin user guest"`}
func main() { validate := validator.New()
user := User{ Name: "A", Email: "invalid-email", Age: 200, Role: "superadmin", }
err := validate.Struct(user) if err != nil { for _, err := range err.(validator.ValidationErrors) { fmt.Printf("फील्ड '%s' वैलिडेशन में विफल रहा: %s", err.Field(), err.Tag()) } } else { fmt.Println("डेटा मान्य है!") }}go-playground/validator का उपयोग कब करें?
यह लाइब्रेरी Go में किसी भी प्रोजेक्ट के लिए आदर्श है जहाँ इनपुट डेटा की विश्वसनीय जाँच की आवश्यकता होती है: REST API (Gin, Echo, Chi के साथ), फॉर्म प्रोसेसिंग, कॉन्फ़िगरेशन फ़ाइलें, CSV/JSON पार्सिंग। यह विशेष रूप से माइक्रोसर्विस आर्किटेक्चर में उपयोगी है, जहाँ प्रत्येक सर्विस को इनपुट पर डेटा की सटीकता सुनिश्चित करनी होती है।
यदि आपको बिना ढेरों कंडीशनल स्टेटमेंट लिखे तेज, लचीला और विस्तार योग्य वैलिडेशन चाहिए — तो go-playground/validator आपकी सबसे अच्छी पसंद होगी।