.Net Core Swagger Kullanımı

Swagger Nedir ?

Swagger, yazılım geliştiricilerin RESTful Web servislerini kolayca çalıştırılıp kullanılmasına olanak sağlayan açık kaynaklı bir araçtır.

Swagger Nasıl Kullanılır ?

Swagger ile ilgili kurulum ve kullanımı hakkında kısa bilgi vereceğim sonrasında bir kaç örnek ile detaylandıracağım.

NuGet Paketleri ile kurulum

Paket Manager Console
Install-Package Swashbuckle -Pre

Project.json dosyası ile kurulum
“Swashbuckle”: “6.0.0-beta902”

Middleware yapılandırması

public void ConfigureServices(IServiceCollection services)
  {
      //Framework servislerini ekleyiniz.
      services.AddMvc();
      //Loglama servislerini ekleyiniz.
      services.AddLogging();

      // Add our repository type
      services.AddSingleton<IEFRepository,EFRepository>();

    //Servislere swaggeri ekleyiniz. Kullanmka istediginizde ISwaggerProvider servisini inject ederek kullanınız. 
  services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new Info { Title = "Baslık", Version = "v1" });
            });
  }

 
  public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  {
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", " Servis baslık");
            });
          

  }

Örneklere başlamadan önce karşılaştığım bir hata hakkında bilgi vermek istiyorum. Projenizde area(admin) alanı var ise orada API değilde normal kontroller kullanıyorsanız swagger oluşturulurken şema hatası verecektir.Bu hatanını çözümünü o kontrolleri ignore ederek çözebilirsiniz. Yapmanız gereken aşağıdaki kod satırınız kontroller sayfanızın başına ekleyiniz.

[ApiExplorerSettings(IgnoreApi = true)]

Swagger Örnek Kullanımı

Middleware yapılandırılmasından sonra bir tane örnek yapacağım.Web API ile bir tablodaki verileri listeleme ve parametre ile getbyId methodlarını kullanacagım.Örnek kod bloğu aşağıdadır.

[Route("api/[controller]")]
    [ApiController]
    public class SwaggerController : Controller
    {

        private readonly IAppLoggerService _appLoggerService;
        public SwaggerController(IAppLoggerService appLoggerService)
        {
            _appLoggerService = appLoggerService;
        }
        [HttpGet("[action]")]
        public IList<AppLogger> GellAllLogs() {
            return _appLoggerService.GetAll();
        }
        [HttpGet("[action]")]
        public  AppLogger  GetById(int Id)
        {
            return _appLoggerService.GetById(Id);
        }

    }

2 – Blazor kurulumu ve proje oluşturma

Blazor kullanmak için Visual Studio 2019 veya .Net Core 3.0 Preview SDK’sı yüklememiz gerekiyor Buradan indirin veya console ekranona aşağıdaki kodu yazın.

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview5-19227-01

Blazor kurulumunu tamamladık,
Şimdi proje oluşturalım consol’a aşağıdaki gibi yazıyoruz.

dotnet new blazor -o BlazorApp

Aşağıdaki gibi dosya yapısı oluşacaktır. Blazor’un yapısı gereği Server ve Client olmak üzere iki farklı kütüphane de çalışacağız daha sonra



şimdi projemizi studio code ile açalım.
ve kodlarımızı yazalım.



dotnet run veya dotnet watch run komutu ile projeyi ayağa kaldırıp bir test edelim.
dotnet watch run ile çalışmak daha sağlıklı blazor’un bu sorunu nasıl çözeceğini bilmiyorum ama her yapılan değişiklikte projeyi debug etmek gerekiyor bu biraz fazla can sıkıcı oluyor proje geliştirirken. Html’ de yapılan değişikliklerde render işlemi yapılmıyor bu işlemi sürekli debug etmek yerine watch ile çözüyorum
Sizde öyle yapın 🙂 ama kod yazma performansı biraz düşüyor.
http://localhost:5000 ‘den test ediyoruz.

Projede butona tıkladığımızda sayac artıyor ve DOM işlemi gerçekleşiyor.

Bir 2 derste component oluşturacağız ve parametre göndereceğiz.
kolay gelsin.

1 – Blazor NEDİR ?

Geçmişte JavaScript web projelerinde tekel olmuştu. Sonrasında ise geliştiriciler TypeScrip, Angular vb teknolojilerini çıkardılar ama sonuç olarak kodlarımız dönüp dolaşıp javaScript ile kod yazmaya geçiyordu. Ama WebAssembly bu yaklaşımı değiştirdi.

Neden WebAssembly

JavaScript güçlü bir dil ancak dezavantajları vardı. Bazıları TypeScript tarafından düzeltildi amma ve lakin konumuz single page olduğu için aradaki farkı çok fazla gün yüzüne çıkarmayı düşünmüyorum 😀

C# yazılımcıları tarafından React, Angular, Vuejs gibi JavaScript ve TypeScript tabanlı dillere geçiş yapmak ve proje geliştirmek ilk araştırma evreleri ve konuyu anlama Freddy’nin kabusu gibi geliyordu.

Single page sayfalarda artık sadece C# kodlarından faydalanarak web uygulamalar geliştirebiliyoruz. Kod yazma performansı olarak örnek vermek gerekirse projelerimde angular ve vue js sık sık kullanırım blazor un verdiği kod yazma performansını hiç bir platformda yakalamazsınız . Proje geliştirmek inanılmaz hızlı gerçekleşiyor.
Blazor’un En sevdiğim tarafı modelleri eşleştirme gibi bir sorununuz artık kalmıyor. En büyük sıkıntı aslında çözülmüş oluyor bu kısımda. Server ve Client tarafı da aynı modelleri kullandığı için çok daha hızlı geliştirme yapabiliyoruz. Diğer bir güzel yani Blazor geliştiricileri Angular vb. teknolojilerde javascript tabanlı kütüphaneleri eklemek imkansız olabiliyordu ama blazor geliştiricileri bunu çok kolay bir şekilde entegre edebilmemizi sağlamışlar.

Blazor’un Genel Mimarisi Aşağıdaki Gibidir

Aşağıdaki görüntü Chrome’daki bir Blazor uygulamasının önyükleme işlemini göstermektedir. Uygulama Blazor JavaScript ( blazor.js ) içerir. Mono çalışma zamanını ( mono.wasm ) WebAssembly içinde önyüklemek için Mono’nun JavaScript kitaplığını ( mono.js ) kullanır. Daha sonra uygulamanın DLL dosyasını ( WebApplication2.dll ) ve .NET Framework’ün DLL’lerini yükler .

K