Go में डेटा सत्यापन: लाइब्रेरीज़ और दृष्टिकोणों का अवलोकन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) में डेटा सत्यापन: लाइब्रेरीज़ और व्यावहारिक उदाहरण

\n\n

डेटा सत्यापन Go में विश्वसनीय वेब एप्लिकेशन और API विकसित करने के प्रमुख पहलुओं में से एक है। इनकमिंग डेटा की सही जांच के बिना, एप्लिकेशन त्रुटियों, गलत इनपुट और हमलों के प्रति संवेदनशील हो जाता है। इस लेख में, हम Go में सत्यापन के लिए तीन लोकप्रिय लाइब्रेरीज़: go-playground/validator, ozzo-validation और govalidator पर चर्चा करेंगे, और उनके उपयोग के उदाहरण देखेंगे।

\n\n

Go में सत्यापन की आवश्यकता क्यों है?

\n

Go एक सख्ती से टाइप की गई भाषा है, लेकिन यह डेटा में तार्किक त्रुटियों से नहीं बचाती: खाली स्ट्रिंग, गलत ईमेल, स्वीकार्य सीमा से बाहर संख्याएं। सत्यापन निम्नलिखित में मदद करता है:

\n
    \n
  • इनपुट पर डेटा अखंडता सुनिश्चित करना;
  • \n
  • त्रुटि प्रबंधन को सरल बनाना;
  • \n
  • एप्लिकेशन सुरक्षा बढ़ाना;
  • \n
  • Boilerplate कोड की मात्रा कम करना।
  • \n
\n\n

1. go-playground/validator — स्वर्ण मानक

\n

सबसे लोकप्रिय लाइब्रेरी (GitHub पर 15k से अधिक स्टार)। यह स्ट्रक्चर टैग में सीधे सत्यापन नियमों का वर्णन करने की अनुमति देती है।

\n\n

स्थापना

\n
go get github.com/go-playground/validator/v10
\n\n

मूल उदाहरण

\n
package main\n\nimport (\n    "fmt"\n    "github.com/go-playground/validator/v10"\n)\n\ntype User struct {\n    Name  string `validate:"required,min=3,max=50"`\n    Email string `validate:"required,email"`\n    Age   int    `validate:"gte=18,lte=120"`\n}\n\nfunc main() {\n    validate := validator.New()\n    user := User{\n        Name:  "A",\n        Email: "invalid-email",\n        Age:   15,\n    }\n    err := validate.Struct(user)\n    if err != nil {\n        for _, err := range err.(validator.ValidationErrors) {\n            fmt.Printf("फ़ील्ड: %s, त्रुटि: %s\\n", err.Field(), err.Tag())\n        }\n    }\n}
\n\n

कस्टम वैलिडेटर

\n
validate.RegisterValidation("is-valid-username", func(fl validator.FieldLevel) bool {\n    return len(fl.Field().String()) >= 5\n})\n\ntype Login struct {\n    Username string `validate:"required,is-valid-username"`\n}
\n\n

2. ozzo-validation — लचीलापन और पठनीयता

\n

ozzo-validation लाइब्रेरी नियम बनाने के लिए fluent-इंटरफ़ेस प्रदान करती है। यह जटिल व्यावसायिक नियमों के लिए उपयुक्त है।

\n\n

स्थापना

\n
go get github.com/go-ozzo/ozzo-validation/v4
\n\n

उपयोग का उदाहरण

\n
package main\n\nimport (\n    "fmt"\n    validation "github.com/go-ozzo/ozzo-validation/v4"\n    "github.com/go-ozzo/ozzo-validation/v4/is"\n)\n\ntype Order struct {\n    ProductID string\n    Quantity  int\n    Email     string\n}\n\nfunc (o Order) Validate() error {\n    return validation.ValidateStruct(&o,\n        validation.Field(&o.ProductID, validation.Required, validation.Length(5, 20)),\n        validation.Field(&o.Quantity, validation.Required, validation.Min(1), validation.Max(100)),\n        validation.Field(&o.Email, validation.Required, is.Email),\n    )\n}\n\nfunc main() {\n    order := Order{ProductID: "AB", Quantity: 0, Email: "bad"}\n    err := order.Validate()\n    if err != nil {\n        fmt.Println(err)\n    }\n}
\n\n

विशेषताएं

\n
    \n
  • टैग की अनुपस्थिति — नियम कोड में लिखे जाते हैं;
  • \n
  • कस्टम प्रकारों के साथ आसान एकीकरण;
  • \n
  • सशर्त सत्यापन का समर्थन।
  • \n
\n\n

3. govalidator — छोटे प्रोजेक्ट्स के लिए सरलता

\n

स्ट्रिंग, संख्याओं और स्ट्रक्चर की जांच के लिए तैयार फ़ंक्शनों के सेट वाली हल्की लाइब्रेरी।

\n\n

स्थापना

\n
go get github.com/asaskevich/govalidator
\n\n

उदाहरण

\n
package main\n\nimport (\n    "fmt"\n    "github.com/asaskevich/govalidator"\n)\n\nfunc main() {\n    // स्ट्रिंग जांच\n    fmt.Println(govalidator.IsEmail("test@example.com"))       // true\n    fmt.Println(govalidator.IsURL("https://pythonlib.ru"))     // true\n    fmt.Println(govalid                    

अनुशंसाएँ