Minimal API Veri Doğrulama .NET 10: Tim Corey ile Derinlemesine İnceleme
Veri doğrulama, API geliştirme sürecinin kritik bir unsurudur. Düzgün bir doğrulama olmadan, yazılım uygulamaları bozuk veri, kötü amaçlı veri veya geçersiz istekleri kabul etme riski taşır ve bu durum veri bozulması, SQL enjeksiyonu gibi güvenlik açıkları, siteler arası betik saldırıları ve hatta tampon taşmaları ile sonuçlanabilir. Gelen bir isteğin iyi biçimlendirilmiş, beklenen formatı içerdiğinden ve backend'inizde tanımlanan veri türlerine saygı gösterdiğinden emin olmak, veri bütünlüğü, sağlam hata yönetimi ve geliştirici güveni için önemlidir.
Tim Corey, ".NET 10'da Minimal API Veri Doğrulama Değişiklikleri" adlı videosunda, Minimal API'lerdeki doğrulama iyileştirmelerini detaylı bir şekilde ele alarak, geliştiricilerin hem sınıflarda hem de kayıtlarda kapsamlı doğrulamayı nasıl uygulayabileceklerini gösteriyor. Tim, sadece geçersiz verileri nasıl önleyeceğini değil, aynı zamanda kod tekrarlamasını nasıl azaltacağını, doğrulama mantığını nasıl basitleştireceğini ve doğrulama başarısız olduğunda doğru HTTP durum kodlarını nasıl döndüreceğini açıklar. Tim'in rehberini takip edelim ve Minimal API'lerde veri doğrulamanın derinlemesine anlaşılması için daha fazla bilgi edinelim.
Minimal API Doğrulamaya Giriş
Tim Corey, .NET 10'da Minimal API'lerin birçok yükseltme aldığını ve bunlar arasında en önemli iyileştirmelerden birinin istek doğrulama olduğunu vurgulayarak başlıyor. Bu, istek sorgu dizesi, başlıklar veya istek gövdesi üzerinden gelsin, gelen taleplerin otomatik olarak doğrulanmasını sağlar. Tim, uygun doğrulamanın yalnızca geliştirici deneyimini iyileştirmekle kalmayıp, aynı zamanda iş mantığına ulaşan hatalı istekleri de önlediğini, bunun da veri bütünlüğünü korumak ve hassas bilgileri korumak için önemli olduğunu vurguluyor.
Tim, videosunun soyut teorilere fazla dalmadan uygulanabilir rehberlik sağlamayı amaçlayan hızlı bir 10 dakikalık eğitim serisinin bir parçası olduğunu da belirtir. Seyircileri, takip etmeleri için kaynak kodunu indirmeye teşvik ediyor.
Doğrulama için Minimal API Kurulumu
Doğrulama kurallarını göstermek için, Tim, API doğrulamasına odaklanmak amacıyla dosya yeni bir projeden minimal bir API kurar. Örnek API'si şunları içerir:
Bağlantıyı test etmek için bir Merhaba Dünya uç noktası.
A POST isteği /person uç noktası, bir Person nesnesi kabul eder.
- Giriş kaydı için /login uç noktasına bir POST isteği.
Tim, API'yi çalıştırır ve hatalı verilerin başlangıçta kabul edildiğini gösterir. Örneğin, boş bir Person nesnesi veya Login kaydında geçersiz bir e-posta göndermek yine de başarılı bir API yanıtı ile sonuçlanır. Bu, geçersiz verilerin backend'de işlenmesini önlemek için şema doğrulama ve istek doğrulamanın gerekliliğini gösterir.
Minimal API'lere Doğrulama Servisleri Ekleme
Tim, uygun doğrulamayı uygulamanın ilk adımının, API'de doğrulama servislerini kaydetmek olduğunu açıklar:
builder.Services.AddValidation();Bu hizmeti ekleyerek, yol işleyicileri gelen isteklerde otomatik olarak tür denetimi, format doğrulaması ve içerik doğrulaması gerçekleştirir. Tim, bu adımın, doğrulama hatalarının sistemden kötü niyetli verilerin geçmesine izin vermek yerine hata mesajları oluşturmasını sağlamak için hayati olduğunu belirtir.
Sınıfları Doğrulama: Person Modeli ile Örnek
Tim, System.ComponentModel.DataAnnotations kullanarak Person sınıfına doğrulama özellikleri ekler. O, özellikleri gerekli olarak işaretler ve minimum uzunluk kısıtlamaları ile format doğrulamasını uygular:
[Gerekli]
[MinLength(2)]
public string İlkAd { get; set; }
[Gerekli]
[MinLength(2)]
public string LastName { get; set; }API'nin çalıştırılması, talep gövdesi gerekli alanları içermediğinde veya bozuk veri içerdiğinde doğrulama hatalarını tetikler. Örneğin, tek karakterli bir LastName gönderimi, ayrıntılı bir hata mesajı ile birlikte 400 Bad Request hatası üretir:
"LastName alanı, 2 karakterden uzun bir dize veya dizi tipi olmalıdır."
Tim, bu tür doğrulama kütüphanelerinin kullanılmasının kod tekrarlamasını azalttığını ve geliştiricilerin her yol işlemcisinde yinelenen doğrulama mantığı yazmaktansa iş mantığına odaklanabilmelerine olanak tanıdığını vurguluyor.
Kayıtları Doğrulama: Giriş Kaydı Örneği
Kayıtların doğrulanması biraz farklıdır çünkü özellikleri yapıcıda tanımlanır. Tim, [özellik:] sözdizimini kullanarak kayıtlarda doğrulama kurallarını nasıl uygulayacağını göstermektedir:
public record Giriş(
[property: Required, EmailAddress] string Email,
[property: Required, MinLength(10)] string Password,
[property: Compare(nameof(Password))] string ConfirmPassword
);Tim'in açıkladığı ana noktalar:
E-posta doğrulaması, E-posta alanının doğru biçimi izlemesini sağlar.
Parolanın minimum uzunluğu, hatalı istekler veya zayıf parolalara karşı koruma sağlar.
- [Compare(nameof(Password))], ConfirmPassword'un orijinal Password ile eşleşmesini sağlar, iç içe nesnelerde veri bozulmasını veya doğrulama hatalarını önler.
Tim, giriş uç noktası için post isteğini çalıştırır ve geçersiz e-posta formatlarının, kısa şifrelerin veya eşleşmeyen onay şifrelerinin otomatik olarak doğrulama hatalarına yol açtığını gösterir. Alanlar beklenen formata uygun olduğunda, API yanıtı başarılı olur.
Kaçınılması Gereken Tuzaklar: Erişilebilirlik Önemlidir
Tim, ince bir tuzağı işaret ediyor: sınıflar veya kayıtlar genel değilse doğrulama sessizce başarısız olur. API isteği nesneye başarıyla bağlansa bile, doğrulama sonuçları zorlanmayacak:
internal record Giriş(...); // Doğrulama çalışmayacakO, kötü niyetli verilerin veya geçersiz girişlerin nesneleri doldurmaya devam edebileceğini, ancak doğrulama stratejisinin atlanacağını açıklar. Bu davranış ASP.NET Core'da belgelenmiştir, ancak Visual Studio geliştiricilere uyarıda bulunmaz, bu yüzden doğrulama kurallarını düzenli olarak gözden geçirmek ve tüm API modellerinin herkese açık olduğundan emin olmak önemlidir.
Minimal API Doğrulaması Kullanmanın Avantajları
Tim, Minimal API'lerde API veri doğrulamasının faydalarını özetleyerek sözlerini tamamlar:
Manuel doğrulama mantığını ortadan kaldırır: Her özellik için tekrarlayan kontroller yazmanıza gerek kalmaz.
Veri bütünlüğünü sağlar: Bozuk isteklerin backend veya iç içe geçmiş nesneleri bozmamasını önler.
Güvenliği artırır: Kötü niyetli verilerden, SQL enjeksiyonundan, çapraz site komut uygulamasından ve diğer güvenlik açıklarından maruziyeti azaltır.
Net hata mesajları sağlar: Hata mesajlarıyla ve uygun HTTP durum kodlarıyla (örn. 400 Bad Request) doğrulama hatalarını geri döner.
Geliştirici deneyimini geliştirir: Temiz, deklaratif doğrulama, kod tekrarını azaltır ve API yanıtlarına olan güveni artırır.
- Kapsamlı doğrulamayı destekler: İstek gövdesinde, sorgu dizelerinde, başlıklarda ve iç içe geçmiş nesnelerde otomatik olarak çalışır.
Tim'in yaklaşımını takip ederek, geliştiriciler özel doğrulayıcı yöntemler yazmaya veya birden fazla uç noktada doğrulama mantığını tekrar etmeye gerek kalmadan kapsamlı doğrulama uygulayabilirler.
Sonuç
Tim Corey'nin videosu, .NET 10 ile Minimal API'lerde API doğrulamasını uygulanabilir, adım adım bir kılavuz sunar. Doğrulama hizmetlerini eklemekle başlayarak, sınıf ve kayıtları nitelikler ile süslemeye kadar, verilerin bütünlüğünü sağlamak, biçim doğrulaması ve hata yönetimini etkili bir şekilde uygulamak için potansiyel tehlikeleri anlamak konusunda Tim, adım adım nasıl uygulandığını gösterir.
Doğru API veri doğrulaması, REST API'nizin yalnızca düzgün biçimlendirilmiş istekleri işlemesini sağlar ve kötü niyetli verilerden, SQL enjeksiyonundan, çapraz site komut uygulamasından ve diğer güvenlik açıklarından kaynaklanan riskleri azaltır. Doğrulama kurallarını, şema doğrulamasını ve düzgün bir doğrulama stratejisini kullanmak, geliştirici güvenini güçlendirirken temiz ve güvenli bir backend sağlar.
Tim'in rehberliğini takip ederek, geliştiriciler güçlü, güvenli ve güvenilir bir doğrulama hattı uygulayabilir, her gönderi isteği, her nesne ve her API isteğinin beklenen formatlara uyduğunu ve hem backend'i hem de son kullanıcıyı güvenli hale getirdiğini garanti edebilir.

