Bu ödev kapsamında, ASP.NET Core ile modern bir API uygulaması geliştirilecektir. Uygulamanın temel yapı taşı olarak ProductController
sınıfı oluşturulacak ve çeşitli özellikler içeren endpoint'ler tasarlanacaktır. Bu endpoint'ler, ASP.NET Core'un güçlü dependency injection ve binding öznitelikleri yardımıyla verilere farklı kaynaklardan nasıl erişilip işlenebileceğini gösteren örnekler sunacaktır.
ProductController
içerisinde, ASP.NET Core'un aşağıdaki attribute'larının pratik kullanımına yönelik çeşitli senaryolar gerçekleştirilecektir. Bu senaryolar, gerçek dünyada karşılaşılabilecek ihtiyaçlara yönelik çözümler sunacak ve attribute'ların nasıl etkin kullanılabileceğini gösterecektir:
FromServices
attribute'u, bir endpoint içinde, dependency injection kullanarak servis katmanındaki bağımlılıkları alır.- Bu attribute ile, servisleri manuel olarak enjekte edebilir ve kullanabilirsiniz.
FromKeyedServices
attribute'u, belirli bir anahtar kullanarak farklı türdeki servisleri enjekte etmeyi sağlar.- Bu yöntemle, aynı türde ancak farklı anahtarlarla tanımlanmış servisleri seçici olarak kullanabilirsiniz.
FromHeader
attribute'u, HTTP istek başlıklarından gelen verileri okuma imkanı sunar.- Örneğin, özel kimlik doğrulama veya oturum bilgilerini başlıklardan çekerek kullanabilirsiniz.
FromBody
attribute'u, HTTP isteğinin gövdesinden gelen JSON veya XML formatındaki verileri okur.- Bu yöntemle, istemci tarafından gönderilen detaylı veri paketlerini alıp işleyebilirsiniz.
FromQuery
attribute'u, URL'de yer alan sorgu parametrelerinden veri çekmenize olanak tanır.- Bu sayede, URL'de verilen filtreleme, sıralama gibi bilgileri alıp kullanabilirsiniz.
FromRoute
attribute'u, URL yolundaki parametreleri alır.- Özellikle kimlik numarası veya kategori gibi bilgileri yol parametreleri olarak alarak işlemler gerçekleştirebilirsiniz.
Bu ödev ile birlikte, ASP.NET Core'un farklı binding ve dependency injection özellikleri kullanılarak modern bir API geliştirme pratiği yapılacaktır. Her bir attribute, gerçek dünyada karşılaşılabilecek durumlara uygun çözümler sunacak şekilde kullanılacaktır.