0Pricing
C# Academy · Ders

Doğrulamayı API'lerle Tümleştirme

Temiz doğrulama hatası yanıtları döndürün.

Doğrulamayı API'lerle Tümleştirme, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.

FluentValidation'ı ASP.NET Core'a Bağlama

İstekleri otomatik olarak doğrulamak için doğrulayıcılarınızı bağımlılık ekleme yoluyla kaydedin. AddValidatorsFromAssembly yardımcısı bir derlemeyi tarar ve bulduğu her doğrulayıcıyı kaydeder.

using FluentValidation;

builder.Services
    .AddValidatorsFromAssemblyContaining<CustomerValidator>();

Otomatik Doğrulama Ara Yazılımı

Modern FluentValidation açık doğrulamayı tercih eder; ancak model bağlamaya bağlanan otomatik doğrulamayı etkinleştirerek geçersiz isteklerin eyleminiz çalışmadan önce reddedilmesini sağlayabilirsiniz.

dotnet add package FluentValidation.AspNetCore

builder.Services.AddFluentValidationAutoValidation();

DI Üzerinden Çözümlenen Doğrulayıcılar

Doğrulayıcılar DI ile kaydedildiğinden, depo gibi hizmetleri ekleyebilirler. Böylece veritabanı destekli asenkron kurallar API'nizde sorunsuz biçimde çalışır.

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

Uç Noktada Açık Doğrulama

Birçok ekip, açıklık sağladığı için açık doğrulamayı tercih eder. IValidator<T> ekleyin ve bunu handler'ın başında çağırın.

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 Nedir?

ProblemDetails (RFC 7807), HTTP hata yanıtları için standart bir JSON biçimidir. type, title, status ve detail gibi alanlara sahiptir; böylece istemciler öngörülebilir bir hata yapısıyla çalışır.

{
  "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, doğrulama hataları için ProblemDetails sınıfını errors sözlüğüyle genişleten ValidationProblemDetails sınıfını kullanır. Bu sözlük her alanı kendi iletileriyle eşler.

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

FluentValidation Sonuçlarını Dönüştürme

ToDictionary() uzantısı, bir ValidationResult nesnesini ValidationProblem tarafından beklenen field -> messages sözlüğüne dönüştürür.

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

ProblemDetails Çıktısını Özelleştirme

Her hata yanıtını zenginleştirmek için AddProblemDetails ve bir özelleştirici kullanın; örneğin hata ayıklama amacıyla bir iz kimliği ekleyebilirsiniz.

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

MVC Denetleyicilerinde Doğrulama

Otomatik doğrulama etkinleştirildiğinde ve [ApiController] kullanıldığında, denetleyici eylemleri de bir istek geçersiz olduğunda otomatik olarak ValidationProblemDetails döndürür; böylece biçim tüm uç noktalar arasında tutarlı kalır.

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

Minimal API'ler İçin Bir Doğrulama Filtresi

Açık doğrulamayı bir uç nokta filtresiyle merkezileştirerek her işleyicinin temiz kalmasını sağlayabilirsiniz.

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

Otomatik ve Açık Doğrulama Arasında Seçim

Otomatik doğrulama kullanışlıdır ancak doğrulama adımını gizler; açık doğrulama daha fazla kod gerektirir ancak şeffaftır ve sınanması daha kolaydır. Birçok ekip, her iki yaklaşımın avantajlarından yararlanmak için açık doğrulamayı paylaşılan bir filtreyle birlikte seçer.

Hızlı Kontrol

API doğrulama tümleştirmesini sınayın.

Özet

Doğrulamayı tümleştirmek; AddValidatorsFromAssembly ile doğrulayıcıları kaydetmek, isteğe bağlı olarak otomatik doğrulamayı etkinleştirmek ve hataları ValidationProblemDetails olarak Results.ValidationProblem(result.ToDictionary()) aracılığıyla döndürmek anlamına gelir. DI, doğrulayıcıların zaman uyumsuz kurallar için depoları kullanmasını sağlar; ayrıca ProblemDetails'ı özelleştirebilir veya işleyicileri temiz tutmak için uç nokta filtreleri kullanabilirsiniz.

Sıkça Sorulan Sorular

“Doğrulamayı API'lerle Tümleştirme” dersi ücretsiz mi?

Evet — “Doğrulamayı API'lerle Tümleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.

“Doğrulamayı API'lerle Tümleştirme” dersinde ne öğreneceğim?

Temiz doğrulama hatası yanıtları döndürün. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Doğrulamayı API'lerle Tümleştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Veri Açıklaması Doğrulaması
  2. FluentValidation Kuralları
  3. Özel ve Koşullu Kurallar
  4. Doğrulamayı API'lerle Tümleştirme
← C# Academy Sayfasına Dön