ASP .NET CORE 5.0 Web API Türkçe Giriş Seviye -4 Nasıl Çalışır?
Merhabalar , bu bölümde önceki bölümde bahsettiğim üzere WeatherForecastController.cs controller dosyası üzerinden sistemin nasıl çalıştığına göz atacağız.
Öncellikle controller dosyası nedir bunu daha iyi anlayalım. .NET Core MVC yani Model View Controller design patternini kullanır peki MVC nedir?
Bir MVC projesi adından da anlaşılabileceği üzere Modeller , Viewler ve Controller’lar olmak üzere 3 kısımdan oluşur.
Modeller: Uygulamadaki objelerimizdir. Kullanacağımız nesnelerin özelliklerini (property) tutan sınıflardır. Daha anlaşılır bir örnek vermek gerekirse API mizin bir arabaya ait bilgileri aktaracağını varsayalım o zaman bizim objemiz bir arabadır model sınıfımız ise arabaya ait araç id’si , araç modeli , araç ismi , hız , direksiyon açısı , yakıt tüketimi , km , model yılı… gibi bilgileri nesnesi oluşturulduğunda tutacak olan sınıftır.
Viewler: Viewler modelleri kullanacağımız görüntüler , sayfalardır ancak bir API yazdığımız için viewlarla uğraşmayacağız.
Controllerlar: Modeller üzerinde yapacağımız her türlü işlemleri içeren sınıflardır. Modeller bilgileri tutarken kontrollerlar işlemleri yönetirler view’imiz üzerinden frene bastığımızda modelimiz olan arabanın yavaşlayıp durmasını istiyorsak bu işlemi controller kısmında yazmamız gerekir.
MVC’yi artık tanıdığımıza göre WeatherForecastController.cs’e dönerek sistemin nasıl çalıştığını inceleyelim.
1*: [] içerisinde kullanılan terimler , bazı özellikleri tanımlamak için kullanılır burada bulunan [ApiController] sınıfımız içerisinde .Net Core tarafından tanımlanan otomatik HTTP 400 yanıtı gibi bazı özelliklerin kullanılması için tanımlanmış. [Route] attribute’ü ise controllerdaki requestleri çağıracak linklerin rotasyonunu belirlemekte kullanılır , içerisinde bulunan controller terimi ise istekler için uzantıda controller’ın isminin kullanılacağını gösterir. WeatherForecastController için sunucuadresi:port\WeatherForecast gibi.
2*: Proje halihazırda bir veritabanına bağlı olmadığı için projede kullanılacak veriler hardcoded olarak el ile girilmiş.
3*: Projenin çalışırken loglama yapabilmesi için kullanılan logger servisi projeye dependency injection yöntemi ile eklenmiş. Servisler ve Dependency Injection yöntemi ve ne işe yaradığı ile ilgili ileride daha detaylı ilgileneceğiz.
4*: API ımızın asıl çalıştığı kod burada yer alıyor. [HttpGet] attribute’ü aşağısındaki fonksiyonun GET requestlerine cevap verdiğini belirtiyor. API mize doğru uzantıda bir GET isteği geldiğinde bu fonksiyon çalışıyor ve bizlere yukarıda girilen veriler üzerinden rastgele hava durumları oluşturarak yanıt olarak gönderiyor.
Peki o zaman nasıl çalıştı?
Öncelikle istek bizlere ulaştığında Request Pipeline’ı dediğimiz ve ileride inceleyeceğimiz işlemler sırasına girdi. Bu pipeline içerisinde ( geçtiği bir çok işlemden henüz burada bahsetmiyoruz ) kısaca route ve HttpGet kavramı sayesinde hangi controller ve hangi fonksiyonun çalışacağı belirlenerek gerekli fonksiyon içerisinde ilgili modeller üzerinde istenilen işlemler yapıldı ve sonuç isteği yapan uygulamaya dönderildi.
Bugün MVC kavramını ve en temel düzeyde API mizin nasıl çalıştığını anladık. Artık sırada kendi API mizi yazmak ve öğrendiklerimizi detaylandırarak API mizi daha kontrollü , güvenilir ve kullanılabilir hale getirmek var. Bir sonraki bölümümüzde de ilk API mizi yazacağız , görüşmek üzere.
Bir sonraki bölüme buradan ulaşabilirsiniz.