Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
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.
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.
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.
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.
.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.
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.
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.
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.
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.
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.
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.
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.
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!
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy