C# (.NET) में डेटा सत्यापन: शक्तिशाली उपकरण FluentValidation
डेटा सत्यापन C# (.NET) में सुरक्षित और विश्वसनीय एप्लिकेशन विकसित करने का एक प्रमुख पहलू है। चाहे आप ASP.NET Core पर वेब-API बना रहे हों, WPF पर डेस्कटॉप एप्लिकेशन या कंसोल यूटिलिटी, इनपुट डेटा की जाँच त्रुटियों, SQL-इंजेक्शन और सिस्टम के गलत संचालन से बचने में मदद करती है। इस लेख में हम FluentValidation लाइब्रेरी के बारे में विस्तार से जानेंगे — जो .NET इकोसिस्टम में सत्यापन के लिए एक आधुनिक, लचीला और व्यापक रूप से उपयोग किया जाने वाला उपकरण है।
FluentValidation क्या है और इसकी आवश्यकता क्यों है?
FluentValidation .NET के लिए एक ओपन-सोर्स लाइब्रेरी है जो fluent-इंटरफ़ेस (मेथड कॉल की श्रृंखला) का उपयोग करके ऑब्जेक्ट सत्यापन नियमों का वर्णन करने की अनुमति देती है। बिल्ट-इन DataAnnotations विशेषताओं के विपरीत, FluentValidation:
- सत्यापन तर्क और डेटा मॉडल को अलग करता है — नियम अलग वैलिडेटर क्लासेस में रखे जाते हैं।
- जटिल परिदृश्यों का समर्थन करता है — सशर्त जाँच, कस्टम नियम, क्रॉस-प्रॉपर्टी जाँच।
- ASP.NET Core के साथ एकीकृत होता है — कंट्रोलर में मॉडल की स्वचालित रूप से जाँच करता है।
- परीक्षण को सरल बनाता है — वैलिडेटर को आसानी से अलग किया जा सकता है और यूनिट टेस्ट से कवर किया जा सकता है।
स्थापना और कॉन्फ़िगरेशन
आरंभ करने के लिए, NuGet Package Manager या .NET CLI के माध्यम से पैकेज स्थापित करें:
dotnet add package FluentValidationयदि आप ASP.NET Core का उपयोग कर रहे हैं, तो Program.cs (या Startup.cs) में वैलिडेटर का पंजीकरण जोड़ें:
builder.Services.AddValidatorsFromAssemblyContaining<MyValidator>();सरल वैलिडेटर बनाना
मान लीजिए हमारे पास एक उपयोगकर्ता मॉडल है:
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public int Age { 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 वर्ष के बीच होनी चाहिए"); }}अब सत्यापन निष्पादित किया जा सकता है:
var validator = new UserValidator();var user = new User { Name = "अ", Email = "अमान्य", Age = 15 };var result = validator.Validate(user);
if (!result.IsValid){ foreach (var error in result.Errors) { Console.WriteLine($"त्रुटि {error.PropertyName} में: {error.ErrorMessage}"); }}उन्नत सुविधाएँ
1. कस्टम नियम (Custom validators)
Must विधि का उपयोग करके या एक अलग विधि बनाकर अपनी स्वयं की जाँच तर्क लिख सकते हैं:
RuleFor(user => user.Name) .Must(name => !string.IsNullOrEmpty(name) && name.All(char.IsLetter)) .WithMessage("नाम में केवल अक्षर होने चाहिए");2. सशर्त सत्यापन
केवल कुछ शर्तों के पूरा होने पर गुणों की जाँच करें:
RuleFor(user => user.Email) .NotEmpty().When(user => user.Age > 18) .WithMessage("वयस्क उपयोगकर्ताओं के लिए ईमेल आवश्यक है");3. क्रॉस-प्रॉपर्टी जाँच
विभिन्न गुणों के मानों की तुलना करें:
RuleFor(user => user.Password) .Equal(user => user.ConfirmPa