FluentValidation क्या है और इसकी आवश्यकता क्यों है?
FluentValidation .NET के लिए एक लोकप्रिय लाइब्रेरी है, जो बिज़नेस ऑब्जेक्ट्स के लिए सख्त और पढ़ने में आसान वैलिडेशन नियम बनाने में मदद करती है। बिल्ट-इन Data Annotations के विपरीत, FluentValidation वैलिडेशन लॉजिक और डेटा मॉडल को अलग करने का तरीका प्रदान करता है। इससे कोड साफ, टेस्ट करने योग्य और लचीला बनता है।
यह लाइब्रेरी "Fluent Interface" का उपयोग करती है, जिससे डॉट नोटेशन के जरिए वैलिडेशन नियमों की चेन बनाई जा सकती है। FluentValidation जटिल परिदृश्यों को सपोर्ट करता है: कैस्केडिंग वैलिडेशन, सशर्त नियम, कस्टम वैलिडेटर, लिस्ट और नेस्टेड ऑब्जेक्ट्स के साथ काम करना।
FluentValidation की आवश्यकता क्यों है?
- जिम्मेदारी का विभाजन: वैलिडेशन नियम डेटा मॉडल को गंदा नहीं करते।
- पढ़ने में आसान: नियमों की चेन को पढ़ना और मेंटेन करना आसान है।
- लचीलापन: जटिल, सशर्त और संयुक्त नियम आसानी से बनाए जा सकते हैं।
- टेस्ट करने योग्य: वैलिडेटर को सामान्य क्लास की तरह टेस्ट किया जा सकता है।
- इंटीग्रेशन: ASP.NET Core, MVC, Web API और अन्य फ्रेमवर्क के साथ बेहतरीन इंटीग्रेशन।
FluentValidation इंस्टॉलेशन
लाइब्रेरी को NuGet पैकेज मैनेजर के जरिए इंस्टॉल किया जाता है। पैकेज मैनेजर कंसोल या .NET CLI टर्मिनल में निम्नलिखित कमांड में से कोई एक चलाएं:
// Package Manager Console के जरिए इंस्टॉलेशन
Install-Package FluentValidation
// .NET CLI के जरिए इंस्टॉलेशन
dotnet add package FluentValidation
ASP.NET Core के साथ इंटीग्रेशन के लिए अतिरिक्त पैकेज की आवश्यकता होगी:
dotnet add package FluentValidation.AspNetCore
त्वरित शुरुआत: कोड उदाहरण
मान लीजिए हमारे पास एक User मॉडल है:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public int Age { get; set; }
public string Password { get; set; }
public string ConfirmPassword { get; set; }
}
अब AbstractValidator<User> से इनहेरिट करके एक वैलिडेटर बनाएं:
using FluentValidation;
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
RuleFor(user => user.Name)
.NotEmpty().WithMessage("नाम भरना अनिवार्य है")
.Length(2, 50).WithMessage("नाम 2 से 50 अक्षरों के बीच होना चाहिए");
RuleFor(user => user.Email)
.NotEmpty().WithMessage("ईमेल अनिवार्य है")
.EmailAddress().WithMessage("ईमेल का फॉर्मेट सही नहीं है");
RuleFor(user => user.Age)
.InclusiveBetween(18, 120).WithMessage("उम्र 18 से 120 साल के बीच होनी चाहिए");
RuleFor(user => user.Password)
.NotEmpty().WithMessage("पासवर्ड अनिवार्य है")
.MinimumLength(6).WithMessage("पासवर्ड कम से कम 6 अक्षर का होना चाहिए");
RuleFor(user => user.ConfirmPassword)
.Equal(user => user.Password).WithMessage("पासवर्ड मेल नहीं खाते");
}
}
वैलिडेटर का उपयोग:
var validator = new UserValidator();
var user = new User
{
Name = "A",
Email = "invalid-email",
Age = 15,
Password = "123",
ConfirmPassword = "456"
};
var result = validator.Validate(user);
if (!result.IsValid)
{
foreach (var error in result.Errors)
{
Console.WriteLine($"प्रॉपर्टी: {error.PropertyName}, त्रुटि: {error.ErrorMessage}");
}
}
FluentValidation के मुख्य तरीके
नीचे लाइब्रेरी के प्रमुख तरीकों का विस्तृत विवरण और उदाहरण दिए गए हैं।
1. RuleFor()
यह क्या करता है: किसी ऑब्जेक्ट के विशिष्ट प्रॉपर्टी के लिए वैलिडेशन नियम परिभाषित करता है। यह मुख्य तरीका है जिससे नियमों की चेन शुरू होती है।
पैरामीटर: एक एक्सप्रेशन जो प्रॉपर्टी को इंगित करता है (