C# अकादमी · पाठ

API के साथ सत्यापन एकीकृत करना

साफ़-सुथरी सत्यापन त्रुटि प्रतिक्रियाएँ लौटाएँ।

पाठ 4, कुल 4 में से13 चरण

API के साथ सत्यापन एकीकृत करना, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

FluentValidation को ASP.NET Core में जोड़ना

अनुरोधों का अपने-आप सत्यापन करने के लिए अपने validators को dependency injection में पंजीकृत करें। AddValidatorsFromAssembly सहायक assembly को स्कैन करता है और मिलने वाले हर validator को पंजीकृत करता है।

using FluentValidation;

builder.Services
    .AddValidatorsFromAssemblyContaining<CustomerValidator>();

स्वचालित सत्यापन middleware

आधुनिक FluentValidation स्पष्ट सत्यापन को प्राथमिकता देता है, लेकिन आप ऐसा स्वचालित सत्यापन सक्षम कर सकते हैं जो मॉडल बाइंडिंग से जुड़कर आपकी क्रिया चलने से पहले अमान्य अनुरोधों को अस्वीकार कर दे।

dotnet add package FluentValidation.AspNetCore

builder.Services.AddFluentValidationAutoValidation();

DI से प्राप्त validators

क्योंकि validators DI के साथ पंजीकृत होते हैं, वे रिपॉज़िटरी जैसी सेवाएँ इंजेक्ट कर सकते हैं। इससे डेटाबेस-आधारित असमकालिक नियम आपके API में सहज रूप से काम कर पाते हैं।

public class UserValidator : AbstractValidator<UserRequest>
{
    public UserValidator(IUserRepository repo)
    {
        RuleFor(u => u.Email)
            .MustAsync(async (e, ct) => !await repo.ExistsAsync(e));
    }
}

एंडपॉइंट में स्पष्ट सत्यापन

कई टीमें स्पष्टता के लिए स्पष्ट सत्यापन को प्राथमिकता देती हैं। IValidator<T> इंजेक्ट करें और हैंडलर की शुरुआत में उसे कॉल करें।

app.MapPost("/users", async (
    UserRequest request,
    IValidator<UserRequest> validator) =>
{
    var result = await validator.ValidateAsync(request);
    if (!result.IsValid)
        return Results.ValidationProblem(result.ToDictionary());
    return Results.Ok();
});

ProblemDetails क्या है

ProblemDetails (RFC 7807) HTTP त्रुटि प्रतिक्रियाओं के लिए एक मानक JSON प्रारूप है। इसमें type, title, status और detail जैसे फ़ील्ड होते हैं, जिससे क्लाइंट को त्रुटि की एक अनुमानित संरचना मिलती है।

{
  "type": "https://tools.ietf.org/html/rfc7231",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": { "Email": ["Email is required."] }
}

ValidationProblemDetails

सत्यापन विफलताओं के लिए ASP.NET Core ValidationProblemDetails का उपयोग करता है। यह ProblemDetails का विस्तार है और इसमें एक errors डिक्शनरी होती है, जो हर फ़ील्ड को उसके संदेशों से मैप करती है।

return Results.ValidationProblem(result.ToDictionary());
// Produces a 400 ValidationProblemDetails response

FluentValidation परिणामों को बदलना

ToDictionary() extension किसी ValidationResult को उस field -> messages डिक्शनरी में बदलता है जिसकी ValidationProblem को अपेक्षा होती है।

var result = await validator.ValidateAsync(request);
if (!result.IsValid)
{
    IDictionary<string, string[]> errors = result.ToDictionary();
    return Results.ValidationProblem(errors);
}

ProblemDetails आउटपुट को कस्टमाइज़ करना

हर त्रुटि प्रतिक्रिया को समृद्ध करने के लिए AddProblemDetails और एक customizer का उपयोग करें, जैसे डिबगिंग के लिए trace id जोड़ना।

builder.Services.AddProblemDetails(options =>
{
    options.CustomizeProblemDetails = ctx =>
        ctx.ProblemDetails.Extensions["traceId"] =
            ctx.HttpContext.TraceIdentifier;
});

एमवीसी नियंत्रकों में सत्यापन

स्वचालित सत्यापन सक्रिय होने पर और [ApiController] के साथ, अनुरोध अमान्य होने पर नियंत्रक की क्रियाएँ भी अपने-आप ValidationProblemDetails लौटाती हैं, इसलिए सभी समापन-बिंदुओं पर प्रारूप एकसमान रहता है।

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpPost]
    public IActionResult Create(UserRequest request) => Ok();
}

न्यूनतम एपीआई के लिए सत्यापन फ़िल्टर

आप स्पष्ट सत्यापन को एक समापन-बिंदु फ़िल्टर के माध्यम से केंद्रीकृत कर सकते हैं, ताकि प्रत्येक हैंडलर साफ़-सुथरा रहे।

app.MapPost("/users", (UserRequest r) => Results.Ok())
   .AddEndpointFilter<ValidationFilter<UserRequest>>();

स्वचालित या स्पष्ट सत्यापन चुनना

स्वचालित सत्यापन सुविधाजनक है, लेकिन सत्यापन के चरण को छिपा देता है; स्पष्ट सत्यापन अधिक विस्तृत होता है, पर पारदर्शी और परीक्षण करने में आसान होता है। दोनों के लाभ पाने के लिए कई टीमें स्पष्ट सत्यापन के साथ साझा फ़िल्टर चुनती हैं।

त्वरित जाँच

एपीआई सत्यापन के एकीकरण का परीक्षण करें।

पुनरावलोकन

सत्यापन को एकीकृत करने के लिए AddValidatorsFromAssembly के साथ सत्यापकों को पंजीकृत करना, वैकल्पिक रूप से स्वचालित सत्यापन सक्रिय करना, और Results.ValidationProblem(result.ToDictionary()) के माध्यम से त्रुटियों को ValidationProblemDetails के रूप में लौटाना आवश्यक है। DI के कारण सत्यापक असिंक्रोनस नियमों के लिए रिपॉज़िटरी का उपयोग कर सकते हैं, और हैंडलरों को साफ़ रखने के लिए आप ProblemDetails को अनुकूलित कर सकते हैं या समापन-बिंदु फ़िल्टर का उपयोग कर सकते हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C# सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
93
पाठ
346

अक्सर पूछे जाने वाले प्रश्न

क्या “API के साथ सत्यापन एकीकृत करना” पाठ निःशुल्क है?

हाँ—“API के साथ सत्यापन एकीकृत करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“API के साथ सत्यापन एकीकृत करना” में मैं क्या सीखूँगा?

साफ़-सुथरी सत्यापन त्रुटि प्रतिक्रियाएँ लौटाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“API के साथ सत्यापन एकीकृत करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. डेटा एट्रिब्यूट सत्यापन
  2. FluentValidation नियम
  3. कस्टम और सशर्त नियम
  4. API के साथ सत्यापन एकीकृत करना
← C# अकादमी पर वापस जाएँ