Örnek Veriler ve Filtreleme - C# ile Bir Örnek API Oluşturma
[[academy-video-youtube({"vid": "gxtdkoWfngQ", "start_time": "0", "title": "Örnek Veri ve Filtreleme - C#'ta Örnek API Oluşturma", "creator": "Tim Corey", "length": "42m 43s"})]]
Bugün web geliştirme ile çalışırken önemli bir araç, örnek bir Web API'sidir - ön uç web uygulamalarını, mobil cihazları veya hatta yazılım uygulamalarını test etmek için kullanabileceğiniz bir şeydir. "Sample Data and Filtering - Building a Sample API in C#" başlıklı detaylı videosunda, Tim Corey, JSON dosyasından örnek verileri yükleyen, filtreleme kuran ve Docker konteyneri ya da geleneksel bir web uygulaması olarak dağıtıma hazırlanan bir C# Web API'si oluştururken adım adım bizlere rehberlik eder.
Bu makalede, Tim'in yaklaşımını adım adım keşfedeceğiz ve ASP.NET Core Web API, Minimal API'ler ve HTTP hizmetlerinden temel kavramları açıklayacağız.
Örnek Web API'ye Giriş
Tim, geliştiriciler için yeni bir Web API projesi oluşturmanın neden bu kadar önemli olduğunu açıklayarak başlar. İster mobil cihazlar için, ister bir web uygulaması veya diğer yazılım uygulamaları için oluşturuyor olun, hafif bir örnek API'ye sahip olmak testleri daha hızlı ve sorunsuz hale getirir.
Tim, projenin sonunda şunlara sahip olacağımızı belirtir:
ASP.NET Core ve .NET Core kullanarak minimal bir API,
OpenAPI (Swagger UI) desteği ile dokümante edilmiş bir API,
Sağlık kontrolleri,
Simule edilmiş hatalar ve yavaşlamalar,
- Docker konteynerinde ve bir VPS sunucusunda dağıtım.
Bu küçük proje, geliştiricilere HTTP yöntemleriyle, örneğin GET, PUT, POST ve DELETE gibi, HTTP hizmetleriyle kolayca etkileşim kurmalarını sağlayacak.
Projeyi ve Örnek Verileri Kurma
Tim, Microsoft'un popüler entegre geliştirme ortamı olan Visual Studio içinde Web API projesinin yapısını oluşturarak başlar.
1:07'de Tim yeni bir Veri klasörü oluşturur ve bir courseData.json dosyası ekler. Tim, canlı sitesi timcorey.com'un benzer bir sistemi kullandığını belirtir - sadece sahne arkasında büyük bir JSON dosyası, bir web hizmeti gibi davranır.
Tim'in kurulumundan önemli noktalar:
Örnek veriler için JSON dosyalarını kullanarak, bir veritabanı veya Entity Framework gerektirmemekten kaçının.
SQL sunucuları gibi ek hizmetlerden kaçınarak konteynerleri küçük tutun.
- Veri değişken değildir - değişiklikleri depolamaya gerek yoktur; * sadece gerektiği zaman verileri sıfırlayın.
Bu tercih, mevcut kaynaklar üzerinde çalışmak ile ilgili REST (Temsili Durum Transferi) ilkelerini yansıtıyor.
Kurs Veri Yapısını Anlama
Tim, örnek JSON dosyasının yapısını dikkatlice inceler:
ID (tamsayı),
Önyükleme (boolean),
Kurs URL'si (dize),
Kursu Türü (dize),
Ad, Ders Sayısı, Kurs Uzunluğu (rakamlar olarak),
Açıklama, Resim URL'si,
ABD Doları olarak Fiyat,
- Önizleme Linki.
Tim, 3:29'da tüm fiyatların ABD doları üzerinden hesaplandığını açıklar; ancak, yerel vergiler (KDV) nihai fiyatı değiştirebilir.
Bu alanlardan her biri daha sonra C# içinde bir model sınıfına eşlenir - ASP.NET Web API'leri oluşturmanın temel bir unsurudur.
Kurs Model Sınıfını Oluşturma
.NET Core kodlamasına geçerek, Tim Models klasöründe bir CourseModel.cs dosyası oluşturur.
4:47'de Visual Studio'nun "Özel Yapıştır > JSON'u Sınıflar Olarak Yapıştır" özelliğini kullanarak anında JSON yapısına dayanan bir sınıf oluşturur. Tim vurgular:
Doğru PascalCase adlandırma (C# web API'leri için önemli),
Zorunlu vs boş bırakılabilir dizeler (6:02),
- Boş bir dizenin daha uygun olacağı durumlarda boş veri depolamaktan kaçın.
Güçlü bir model sınıfı oluşturmak, istemciler ve sunucu arasında veri iletişimini sağlamak için çok önemlidir.
Verileri Belleğe Yükleme
Tim, kurs listesinin belleğe yüklenmesini yönetmek için bir CourseData.cs sınıfı oluşturarak devam eder.
Ana adımlar:
Sistem.Text.Json ile serileştirme kullanın,
camelCase JSON'u PascalCase C# alanlarına eşlemek için PropertyNameCaseInsensitive = true ayarını yapın (8:04),
Çapraz platform dosya erişimi için Path.Combine kullanın (9:04),
- Linux sunucularıyla çalışırken harf duyarlılığına dikkat edin (9:59).
Kurslar, tekrarlanan şekilde bir veritabanına erişmeden hızlı erişim sağlayarak, herkese açık List<CourseModel> özelliğine yüklenir.
Tim, 11:04'de serileştirme başarısız olduğunda, boş referans hatalarını önlemek için yeni bir boş listė oluşturulacağını vurgular - sağlam API'ler oluştururken en iyi uygulama.
Kurs Verilerini Bağımlılık Enjeksiyonuna Kaydetme
Bir sonraki adımda, CourseData sınıfını hizmetler konteynerine AddTransient kullanarak nasıl kaydedeceğini gösterir.
Tim, verilerin yalnızca okunabilir olmasına rağmen, geçici bir hizmetin istemeden yapılan değişikliklerin önlenmesine vurgu yapar. Bu yaklaşım, modern ASP.NET Core Web API geliştirme standartları ile uyumludur.
Kurs Uç Noktaları Oluşturma
14:03'de Tim, örnek API için uç noktalar inşa etmeye başlar:
Tüm kursları almak için /courses'da bir GET yöntemi,
- Temiz kod için AddCourseEndpoints bir uzantı yöntemi.
Bu modüler yaklaşım, Web API projenizi ölçeklendirmeyi basitleştirir - büyük HTTP hizmetlerini veya birden fazla uç noktayı yönetirken temel bir tekniktir.

Tim ayrıca Swagger UI'ı başlatma URL'si olarak ayarlar, test etmeyi kolaylaştırır.
Sorun Giderme: Veri Tipi Uyumsuzlukları
Yeni uç noktayı test ederken, Tim CourseLengthInHours alanı ile ilgili durum kodu hatasıyla karşılaşır. Bazı kursların kesirli saatlere sahip olduğunu (örneğin, 2.5) fark eder ve bunun için int yerine double gerektiğini anlar.
Tim CourseModel'i düzeltir ve dış web kaynaklarını tüketirken veri tiplerini dikkate almanın ve ayrıntılı hata kontrolünün değerini gösterir.
API'yi ID Çözümlemesiyle Geliştirme
Tim fonksiyonelliği genişletir:
Tüm kursları almak için LoadAllCourses,
- ID ile kurs bulmak için LoadCourseById.
Bir kursun var olup olmadığını kontrol ederek hata yönetimini geliştirir. Eğer yoksa, Tim return NotFound() kullanarak istemciye uygun bir HTTP durum kodu döner.
Bu, her HTTP metodunun işlem sonucunu açıkça ilettiği RESTful mimari stil uygulamalarına uygundur.
Kurs Türüne ve Aramaya Göre Filtreleme Ekleme
gerçek web hizmetlerinin filtreleme yeteneklerine ihtiyacı vardır
Tim, LoadAllCourses'u sorgu parametrelerini kabul edecek şekilde geliştirir:
courseType (dize),
- search (dize).
İsteğe bağlı parametrelerin güvenli bir şekilde nasıl işleneceğini String.IsNullOrWhiteSpace kullanarak açıklar.
courseType ile filtreleme, harf farklarını göz ardı ederek String.Compare ile RemoveAll kullanır. Ders adı ve kısa açıklamada arama, harf duyarsız karşılaştırma ile .Contains kullanılarak yapılır.
Tim şu senaryoları test eder:
"Master Kurs" için filtreleme
"web" veya "SQL" için arama
- Daha rafine sonuçlar için arama ve kurs türünü birleştirme
Bu, internet uygulamaları, mobil uygulamalar veya HTTP üzerinden iletişim kuran istemciler arasında tamamen etkileşimli bir deneyim sağlar. Daha ayrıntılı bilgi için tam video'ya bakın.
Son Düşünceler ve İleri Aşamalar
Dersin sonunda, Tim şunları oluşturmuştur:
Çalışan bir ASP.NET Core Web API,
Filtreleme ve arama yetenekleri,
Doğru hata yönetimi (NotFound, Ok, vb.),
- Swagger UI ve OpenAPI dokümantasyonu desteği.
Tim, bir sonraki aşamada, API'ye internet istemcileri ve farklı etki alanlarının özgürce erişmesini sağlamak için Kritik Tek Dönemli Kaynak Paylaşımı'na (CORS) değineceğini önizler.
Tim, programlamanın her zaman engeller içerdiğini ama ödüllendirici olduğunu belirterek kapanışı yapar.
Sonuç
Tim Corey'nin videosunu takip ederek, Visual Studio'da yeni bir Web API projesi oluşturabilir, örnek verileri yükleyebilir, uç noktalar oluşturabilir ve güçlü filtrelemeler uygulayabilirsiniz - hepsi RESTful ilkeleri ve ASP.NET Core standartlarına dayanarak.
İster web sayfalarını test edin, ister mobil cihazlar için API'lar oluşturun, ister mevcut kaynaklarla çalışın, bu kurulum, HTTP yöntemleri aracılığıyla verilere hızlı ve güvenilir erişim sağlar.
.NET Core'da bu kalıpları pratik yapmaya devam edin ve yakında istemciler, sunucular ve internet arasında sorunsuz iletişim sağlayan sağlam web hizmetleri oluşturacaksınız!




