.NET Core WEB API Projesine Swagger Yardım Sayfası Ekleme

Servis uygulamamızdaki endpoint’leri görüp yönetmemizi sağlayan, bildiğimiz .Net’in kendi oluşturduğu Helper sayfası var ancak bu sayfada aynı zamanda metodlarımızı,  göndereceğimiz ve bize dönecek modelleri görerek test etmek işimizi oldukça kolaylaştıracaktır. Bu yazıda, bu isteğimizi yerine getirebilecek bir kütüphanenin, Swagger’ın, Asp.Net Core ile yazılmış Web API uygulamamıza nasıl eklendiğini ve çalıştığını göreceğiz. Öncelikle şu kütüphanenin yüklü olması gerekiyor:

Swashbuckle.AspNetCore

Sonrasında projemizin Startup.cs dosyasına gidiyoruz ve swagger arayüzünün çağıracağımız tanımlamaları yapacağımız kodlarımızı yazıyoruz. ConfigureServices metodunun içinde:

Burada Authorization’ı belirtmemiz, veri post veya get ederken eğer kullanıyorsak güvenlik yapımızı test sürecinde, arayüzde rahatça kontrol edebilmemizi sağlar. Ayrıca Configure metodumuzda:

Sonrasında projemize sağ tıklayıp, özelliklerde Compiler bölümündeki Generate xml documentation’ı tikliyoruz.

Bu görsel boş bir alt niteliğe sahip; dosya adı Screen-Shot-2018-04-18-at-00.57.10-1024x679.png

Projeyi çalıştırdığımıda çıktımız şöyle oluyor:

Olası Hatalar:

Failed to Load API Definition hatasının olası çözümleri:

  1. [HttpPost] veya [HttpGet] attribute’larını tanımlamayı unutmak, bu hatayı alma sebeplerimizden birisidir. Dahil olmasını istemediğimiz metodlarımızın üzerine

[ApiExplorerSettings(IgnoreApi = true)]

attribute’ünü eklememiz gerekiyor.

  1. Access-Control-Allow-Origin header’ını aktif etmek
  2. UseCors(“SiteCorsPolicy”); kodunu Configure(IApplicationBuilder app, IHostingEnvironment env) metoduna eklemek.
  3. Configure metodunda Swagger’ı ekleme işlemini if komutunun içine taşımak.

Örnek projeyi, GitHub‘dan indirebilirsiniz.

Swagger’ın GitHub’ını buradan inceleyebilirsiniz..

We have Helper page, which we know that allows us to see and manage endpoints in our service application, but testing on this page at the same time by seeing our methods, sending them back, and seeing the models that will return to us will make our work much easier. In this article, we will see how a library, Swagger, that can fulfill this requirement, has added and worked on our Web API application written in Asp.Net Core. First of all, this package library needs to be added to our project:

Swashbuckle.AspNetCore

We then go to the Startup.cs file of our project and write our code to implement swagger interface definition. In the ConfigureServices method:

The reason for specifying Authorization here is that we can easily control the swagger interface with our authorization mechanism, if we use it when posting or retrieving data. Also in our Configure method Swagger needs to be added to the request pipeline in order to expose the Swagger generated data:

Then, right click on my project, check Generate xml documentation in the Compiler section under the Build section.

Output will be like this:

Possible Errors:

Possible solutions to the

Failed to Load API Definition error:

  1. Forgetting write [HttpPost] or [HttpGet]  attributes top of the IActionResult, one of the reason of this error. If we want ignore some of our methods, we should add this:

[ApiExplorerSettings(IgnoreApi = true)]

  1. Activate Access-Control-Allow-Origin header.
  2. Adding UseCors(“SiteCorsPolicy”); line in to Configure method.
  3. In Configure method add Swagger in if block.

Download my sample swagger GitHub project here.

Recommendation:  Checking out the GitHub page for the project.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir