• Buradasın

    ASP.NET Core'da Swagger Extension Kullanımı ve Response Type Yapılandırma Eğitimi

    youtube.com/watch?v=QEyhPxXHU34

    Yapay zekadan makale özeti

    • Bu eğitim videosu, Salih Cantekin tarafından sunulan Swagger extension kütüphanesinin ASP.NET Core uygulamalarında nasıl kullanılacağını anlatan bir eğitim serisinin ikinci bölümüdür.
    • Video, Swagger'da response type ve model provider konularını ele alarak başlıyor ve ardından ASP.NET Core uygulamalarında otomatik response type eklemeyi, API endpoint yapılandırmasını ve HTTP status kodları için config sınıfı oluşturma sürecini adım adım gösteriyor. Eğitmen, controller ve action metodlarına response type'larını run time'da eklemeyi, Swagger'da bunların görünmesini sağlamak için config modelleri ve extension metodları oluşturma sürecini detaylı şekilde anlatıyor.
    • Eğitim boyunca, default HTTP status kodları, HTTP metodlarına göre özelleştirme seçenekleri, controller ve action filtreleme işlemleri, exclude edilen controller ve actionları tespit etme, dependency injection ile yapılandırma entegrasyonu ve Swagger'ın HTTP status kodlarını ve response modellerini özelleştirme gibi konular kod örnekleriyle gösterilmektedir. Video, Swagger'ın extension ve app extension'larını kullanarak özelleştirmeler yapma süreciyle sonlanmaktadır.
    00:01Swagger Extension Videonun İkinci Bölümü
    • Salih Cantekin, Swagger extension kütüphanesinin Swagger ve OpenAPI implementasyonunu iki bölüme ayırdıklarını belirtiyor.
    • İlk bölümde authorization, XML documentation support ve app etme konularını ele aldıklarını, ikinci bölümün karışık olduğu için ayrıldığını açıklıyor.
    • Bu videoda response type model provider'ı incelenecek ve Swagger'da nasıl kullanıldığı, kullanıcıya sunulacak özelliklerden bahsedilecek.
    00:52Swagger'da Response Bölümü
    • Projeyi çalıştırdığında Swagger'da endpoint'lerin alt kısmında varsayılan olarak "responses" bölümü bulunuyor.
    • Eğer endpoint çağrılırsa 200 HTTP statüs kodu döneceği varsayılan olarak belirtiliyor.
    • Bu response'ları konfigüre ederek farklı HTTP statüs kodları ve dönüş türleri belirtebiliriz.
    02:06Response Type Konfigürasyonu
    • Controller'da "produce response type" adlı bir anotasyon kullanılarak HTTP statüs kodu ve dönüş türü belirlenebilir.
    • Örneğin, 200 kodu döndüğünde boolean bir değer döneceği belirtilerek client bilgilendirilebilir.
    • Alternatif olarak ActionResult içinde dönüş türü belirtilerek de aynı sonuca ulaşılabilir.
    04:00Farklı Durumlar İçin Konfigürasyon
    • Birden fazla dönüş türü olabilir: boolean, integer, string, hata mesajı veya validasyon modeli gibi.
    • Farklı HTTP statüs kodları için farklı dönüş türleri belirtebiliriz, örneğin 200 kodu için model, 400 kodu için string mesaj.
    • Produce response type'ları kastimize edebiliyoruz belli statüs kodlarına göre, böylece client'a ne beklediğini bildiriyoruz.
    06:48Kullanıcıya Sunulacak Özellikler
    • Swagger client extension kullanıcısına bu özelliği sunmak istiyorlar.
    • Herkesin her metoda bu anotasyonları yazmasını bekleyemeyecekleri için bu özelliği şekillendirmek istiyorlar.
    • Farklı senaryolar için farklı HTTP status kodları ve dönüş türleri olabileceği için bu konfigürasyonun esnek olması gerekiyor.
    07:21API Sonuç Kodları ve Dönüş Tipi Yönetimi
    • HTTP POST metoduyla yapılan isteklerde 200 ve 201 kodları kullanılarak işlem başarılı veya oluşturuldu durumları belirtilir.
    • ActionResult dönüş tipi kullanıldığında, özel durumlar için farklı dönüş tipleri (integer, boolean, string) eklenmesi gerekebilir.
    • Endpoint'lerin default dönüş tipleri, özel durumlar için belirtilen dönüş tipleriyle çakışabilir, bu nedenle tip kontrolü yapılmalıdır.
    10:09Sistemli Dönüş Tipi Ekleme
    • Tüm controller'ların altındaki action metodlarına sistemli bir şekilde dönüş tipleri eklemek amaçlanmaktadır.
    • Kullanıcılar belirli HTTP metodları (POST, GET) için sabit hata kodları ve mesajları döndürmek isteyebilir.
    • Bu işlemler runtime'da, uygulama açılırken eklenir ve Swagger tarafından tanınır.
    11:28Konfigürasyon Modeli Oluşturma
    • Infrastructure altına ResponseTypeModelProviderConfig adında bir class ekleniyor.
    • Controller ve action bazında hariç tutulacak işlemler için metodlar eklenmesi planlanıyor.
    • ExcludeAction metodu ve internal olarak tanımlanan excludedActions string listesi oluşturuluyor.
    12:36Action ve Controller Ekleme İşlemleri
    • Action name'i liste içerisine eklemek için önce null kontrolü yapılıyor ve eğer boşsa hata fırlatılıyor.
    • Eğer action name'i zaten listede varsa "Bu action zaten kullanılmış" hatası fırlatılıyor.
    • Controller ismi ve action name'i birleştirerek full name oluşturuluyor ve metot kendisini çağırarak işlem tamamlanıyor.
    14:16Controller Hariç Bırakma
    • Controller'ları hariç bırakmak için "exclude controller" metodu oluşturuluyor.
    • Controller ismi için yeni bir değişken oluşturuluyor ve controller kontrolü yapılıyor.
    • Tüm bu işlemleri "exclude metod" adlı bir yapı içerisine alınıyor.
    15:27Default Konfigürasyon Değerleri
    • Tüm endpoint'lere HTTP status kodları (OK, BadRequest, InternalServerError) otomatik olarak eklemek için "defaultHttpStatusCode" değişkeni oluşturuluyor.
    • Kullanıcıya HTTP metodlarına göre endpointleri özelleştirme özelliği veriliyor, örneğin tüm POST metodları için OK durumunda belirli bir değer döndürme.
    • "defaultHttpMethod" değişkeni oluşturuluyor ve GET, POST, PUT, PATCH, HEAD, DELETE metodları listeye ekleniyor.
    17:09Endpoint Dönüş Tipi Yapılandırması
    • Endpoint'in dönüş tiplerini belirlemek için "defaultTypes" değişkeni oluşturuluyor.
    • ActionResult veya IActionResult gibi belli tipler otomatik olarak ekleniyor.
    • "typeBaseStates" listesi oluşturuluyor ve kullanıcı belirli HTTP status kodları için dönüş tipi belirtebiliyor.
    18:32HTTP Metodu ve Durum Kodu Yapılandırması
    • Kullanıcıların hangi HTTP metodu için hangi tipi geriye dönmek istediğini belirtebilmeleri için "ConfigModel" adlı bir sınıf oluşturuluyor.
    • ConfigModel sınıfı içinde HTTP metod ve HTTP status code bilgilerini tutan iki property bulunuyor.
    • Bu yapıyı kullanarak HTTP metodlarına göre farklı durum kodları ve dönüş tipleri yapılandırılabilir.
    20:12Constructor ve Parametreler
    • Constructor, dışarıdan parametre gönderilebilecek şekilde tanımlanıyor.
    • Constructor'da "generate default types" ve "generate default status codes" parametreleri true olarak set ediliyor.
    • Default tipler ve status kodları, parametre değerlerine göre listelere dolduruluyor.
    22:33Default HTTP Status Kodları Oluşturma
    • HTTP status kodları için HTTP metodlarını birbiriyle kartezyen çarpımı alınıyor.
    • "Generate default http status code for http method" adlı private metod oluşturuluyor.
    • Constructor içinde type base status kodların dictionary'si ve excluded controller'lar listesi oluşturuluyor.
    24:04Default Ayarlar İçin Statik Metod
    • "Create default" adlı statik metod ekleniyor.
    • Bu metod, class'ın iki parametresinin de true olduğu bir kopyasını geri döndürüyor.
    • Kullanıcılar artık constructor'ı çağırmak yerine bu statik metodu kullanabilirler.
    24:52Default Response HTTP Status Code Metodu
    • "Default response http status code for http method" adlı public metod oluşturuluyor.
    • Bu metod, HTTP metod ve status code parametreleri alarak listeye ekliyor.
    • Eklemeden önce aynısı zaten eklenmiş mi kontrol ediliyor, aksi takdirde exception fırlatılıyor.
    26:53Type Base Status Kod Kontrolü
    • Type base status kod listesinde olup olmadığı kontrol ediliyor.
    • Eğer status kod zaten type base status kod listesinde varsa, "specific type" hatası veriliyor.
    • "Default response http status code for all" adlı metod, tüm HTTP metodları için status kod eklemeyi sağlıyor.
    29:52Default Type İşlemleri
    • Default type'lar (task action, result ve i-action) eklenmiştir ve kullanıcıya da bu türleri değiştirmesini sağlamak için iki metod eklenecektir.
    • Birinci metod, dışarıdan alınan türü default type olarak ekler ve önceden aynı türün eklenmiş olup olmadığını kontrol eder; eğer varsa ArgumentException fırlatır.
    • İkinci metod, birden fazla türü eklemek için params kullanılarak Type array alır ve her bir türü döngü içinde birinci metoda göndererek ekler.
    31:39Özel Type ve Clear Metodları
    • TypeBase sınıfına spesifik type for spesifik HTTP status code metodunu eklenerek, belirli bir status kodu için özel tip ataması sağlanabilir.
    • Default type'ları ve response type'ları temizleyebilmek için clear metodları eklendi.
    • Swagger config'e response type model provider config olarak bir property eklendi.
    33:37Dependency Injection ve Provider Yapılandırması
    • Swagger gen options'a config içerisindeki response type model provider'ı eklendi.
    • Dependency injection için bir provider oluşturuldu ve sisteme singleton olarak eklendi.
    • IApplicationModelProvider interface'inden türetilen bir ResponseTypeModelProvider sınıfı oluşturuldu.
    36:43Controller ve Action Filtreleme
    • GetTRTController metodunda, config içerisindeki exclude edilen controller'ları filtreleyerek sistemden alınan controller'ları işler.
    • GetNonExcludedActions metodunda, controller altındaki action'ları filtreler ve HTTP metodlarını kontrol eder.
    • Default status kodlardan birinde varsa action eklenmez, aksi halde action ve HTTP metodları bir liste olarak döndürülür.
    41:25Metot Oluşturma ve Return Type İşlemleri
    • Default bir return type olduğu için özel bir tip varsa bu eziyor olmayacak.
    • GetActionResult adında bir metod oluşturulacak ve bu metod action'ın geriye döndüğü tipi dönecek.
    • GetActionModelReturnModelType adında bir private metod daha oluşturulacak ve bu metod generic ise jenerik tipine kadar gidip geriye bir return type dönecek.
    42:16Type Base Status Code İşlemleri
    • Type base status code için bir döngü başlatılıyor ve config içerisindeki type base status kodları arasında dönülüyor.
    • AddFilterToActionModel adında bir private metod ekleniyor ve bu metod action modeli ve bir attribute alıyor.
    • Filtre eklenmeden önce kontrol yapılıyor; aynı tip ve status kod daha önce eklenmiş mi diye kontrol ediliyor.
    43:54Content Type Tanımlama
    • Content type için internal const string defaultContentType tanımlanıyor ve değeri "application/json" olarak ayarlanıyor.
    • AddFilterToActionModel metodu çağrılıyor ve action modeli ile birlikte status kodu ve tip bilgisi gönderiliyor.
    • TypeBase status kodları ekleniyor ve default status kodları da ekleniyor.
    45:31Default Status Kodları Kontrolü
    • Default status kodları için bir döngü başlatılıyor ve config içerisindeki default status kodları arasında dönülüyor.
    • Eğer type status kodları içerisinde default status kodu varsa, o kod eklenecek.
    • ActionWithMethods içerisindeki HTTP metodlarına göre filtre ekleme kontrolü yapılıyor.
    48:14Return Type Kontrolü ve Filtre Ekleme
    • Return type'ın default type'lar arasında olup olmadığı kontrol ediliyor.
    • Eğer return type default type'lar arasında ise sadece HTTP status kodu ekleniyor.
    • Eğer return type default type'lar arasında değilse, return type ve HTTP status kodu birlikte ekleniyor.
    51:12Dependency Injection ve Test
    • Dependency injection için ResponseTypeModelProvider adında bir extension metod oluşturuluyor.
    • Service collection'a configure metodu ekleniyor ve config parametresi alınıyor.
    • Controller'lar test edilmek üzere temizleniyor.
    53:33Swagger Konfigürasyonu
    • Konfigürasyon kısmına geçilerek "provider" ve "config" içindeki "response type model provider" ayarları inceleniyor.
    • "Create default" metodu yazılacak ve default değerler true olarak ayarlanacak.
    • Provider özelleştirilerek "add default type" ve "clear default type" metotları eklenecek.
    54:28Özel Tip Ekleme
    • "Type of test" ve "type of action result" özel tipler olarak ekleniyor.
    • "Add spesifik type" metodu ile HTTP status kodu için özel ayarlar yapılıyor.
    • "Exclude controller" özelliği ile belirli controller'ları dışlama seçeneği sunuluyor.
    55:44Konfigürasyon Uygulaması
    • Provider, config'e aktarılarak action result ve test olanların hepsinin ekleneceği belirtiliyor.
    • HTTP status kodu 200 (okey) durumunda string dönüşü sağlanıyor.
    • Test controller'ları dışlanarak sadece belirli controller'lara uygulama yapılıyor.
    57:39Özel Durumlar İçin Konfigürasyon
    • HTTP status kodu 400 (bad request) durumunda özel bir response modeli (Bad Request Response Model) kullanılması sağlanıyor.
    • Get metodları için HTTP status kodu 404 (not found) veya 204 (no content) durumları özel olarak ayarlanabiliyor.
    • Sadece belirli HTTP metodları için özel response türleri eklenebiliyor.
    54:01Tüm Metodlar İçin Konfigürasyon
    • "For all" özelliği ile tüm HTTP metodları için ortak bir response status kodu (örneğin 500 Internal Server Error) eklenebiliyor.
    • Bu şekilde metod tipine bakılmaksızın belirli bir response status kodu tüm metodlara otomatik olarak ekleniyor.
    • Video, Swagger konfigürasyonu serisinin ikinci ve son videosu olarak sunuluyor.

    Yanıtı değerlendir

  • Yazeka sinir ağı makaleleri veya videoları özetliyor