Swagger İle Rest Api'ni Konuştur - 1
Tags: swagger, rest, programming, beginners
Published: 2022-03-10 20:21:52

Uzatmadan neler yapacağımızı baştan söylemek isterim:
- Rest Api sistemi kuracağız.
- Swagger ile Rest Api mizin konuşmasını sağlayacağız.
- Token yapısını kuracağız. (Bonus)
- Api mizi Lokal bir veritabanına bağlayacağız.
- Veritabanı üzerinden CRUD işlemleri yapacağız.
- Api mizi Benchmark testine tabi tutacağız.
- Bir çok request ve response u thread group larda toplayıp Jmeter ile yük testini gerçekleştireceğiz.
- Grafana ile sistemizdeki performans metriklerini canlı olarak takip edeceğiz.
- Biraz da exception handling kapsamında Retry mekanizmasından bahsedeceğiz.

Yeterli mi? 😊 Siz de takdir ederseniz ki yukarıda belirttiğim maddeler bir yazıya sığmaz o yüzden bir yazı serisine başlayacağız. Hadi başlayalım.

---

Bir Rest Api oluştururken yapacağımız en önemli işlemlerden bir tanesi sistemimizin uygulama üzerinden gelecek isteklere (request) cevap verebilmesidir. Kullancı veri çekmek, herhangi bir veriyi güncellemek ya da silmek de isteyebilir. Eğer bir Rest Api yazıyorsanız bunlar için request/response methodları oluşturmanız, veri tabanına bağlantı yapmanız ve test etmeniz gerekecek ve bu esnada bir çok problemlerle (bug) karşılacabileceksiniz. Şimdi size bunu kısa yoldan nasıl test edebileceğimize, request ve response mantığının nasıl işlediğine beraber bakmak istiyorum. Bu yazı bir yemek tarifi kıvamında olacak. 😊 Yemek yaparken ihtiyaç duyduğumuz araçlar, malzemeler ve yapılış aşamaları bu yazımızda harfiyen uygulanacak. 

---

Araçlarımız:

- Visual Studio (Code değil! - Bir ara orada da yaparız.)
- Jmeter, InfluxDB, Grafana (Aciliyeti yok ama test yapacaksak, neden olmasın.)

Malzemeler:

- ASP.Net Web Application
- Swagger

Mental Olarak Hazırlık Aşaması:

- Sabır
- Kod yazma
- Test

Araçlarımız, malzemelerimiz ve de yemek öncesi hazırlıklarımız tamamsa tarife geçebiliriz. 

---

Aklınıza şöyle bir düşünce gelebilir. 

> İlk önce Web API nin sonra Swagger ın tanımını yapmalı, kullanma amaçlarını açıklamalıydı sonra tarife geçmeliydi, giriş-gelişme-sonuç, bize böyle öğretildi. Yanlış anlatıyor bu?

Peki şöyle düşünün ben bir yemek tarifine bakarken aşçı yemekte araç olarak kullandığı tavayı, doğradığı soğanı veya domatesi size tanımını mı yapıp daha sonra mı tarife geçiyor. Yoksa sen tavanın veya domatesin - eğer bilmiyorsanız tabii - ne olduğunu aşçı yaparken ve de kendin evde test ederken mi anlıyorsun. Aydınlandık biraz değil mi? 😊

Tanımlamalara takılmayın, yapın, yapın ve yüz kere yapın, tadına bakın güzelse tabağa koyun, tuzu eksikse tuz ekleyin fazlaysa su, ama sıcak su - soğuk su eklerseniz yemek bulamaca dönebilir. Kodlama da böyle pratik yaparak, hatalar ... cümlenin sonunu hepimiz biliyoruz, çok uzatmayım hadi başlayalım.

Başlıyoruz...

---

Serimizin ilk yazısında Web Api yi kuracağız, Swagger ı ekleyeceğiz ve ilk ekran görüntüsünü alacağız.
1. Visual Studio yu açınız ve **Create A New Project** tabına basınız
2. Proje olarak **ASP.NET Web Application (.NET FRAMEWORK)** seçiniz.
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vxxx7jg3cv43iz7h1x68.png)
3. Proje ismini belirleyiniz, hangi klasörde muhafaza edeceğinizi ve framework ünüzü belirleyiniz. (Framework olarak 4.7.2 yi seçebilirsiniz)
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tgqwc9qalm7p0nlumsui.png)
4. Sonra aşağıdaki gibi Authentication bölümüne tıklayın ve **Individual User Accounts** u seçiniz.
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eosn3wlzyo2c6f9upi7j.png)
5. Karşınıza aşağıdaki gibi bir ekran gelecektir. Play tuşuna basın ve sisteminizin çalışıp çalışmadığını kontrol ediniz.
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lcfkek03c1smgb0mx9m0.png)
6. Sisteminizin çalışıyorsa karşınıza böyle bir sayfa çıkmasını beklemeliyiz. Ne kadar kolay ilerliyoruz değil mi? 😊
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a1jwt08n051dfms7xqdx.png)
7. Şimdi sıra geldi **Swagger** kütüphanesini eklemeye. Eğer web sitesi hala açıksa Visual Studio daki projenizdeki kırmızı kare tuşuna ki kendisi Stop düğmesi olarak bilinir, lütfen basınız.
8. Swagger ı eklemek için projenizdeki **References **sekmesine right-click yapınız ve **Manage Nuget Packages** kısmına tıklayınız.
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jdnu7cyevoi8mn2dpajq.png)
9. Karşınıza çıkan ekranda **Browse** tabını seçiniz ve **Swashbuckle** yazın ve karşınıza aşağıdaki gibi bir liste gelecektir. Kırmızı ile çizdiğim kütüphaneyi seçip, Install butonuna basınız ve karşınıza çıkacak diğer onay ekranlarına da Kabul Et diyerek devam ediniz. Yükleme işlemi tamamlanınca yüklediğiniz kütüphanenin üzerinde aşağıda gösterilen resimdeki gibi yeşil bir tick işareti çıkar. Doğru yoldasınız😊
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khfr1k7jimrs5ud1polo.png)
10. Öyle ise tekrar play tuşuna basınız sitenizin yüklendiğini göreceksiniz. Siteniz açıldığında Url kısmına, sitenizin isminin sonuna aşağıdaki gibi **/swagger** yazınız.
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zwtnw4xqyjbr32po2dz5.png)
11. İşte bu kadar! Karşınızda Rest Api denince akla gelen request/response ların örnekleri ile dolu bir ekran.
![Web Api](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2omw97ygz2lkx1bd3q19.png)

> Bu ekranda ilgili resquest leri test edebilir ve response ları gözlemleyebilirsiniz. Büyük ihtimalle çoğunda yetki hatası alacaksınız. O durumu da bir sonraki yazıya devredeceğim.

Arkadaşlar şimdilik ilk kurulumu yaptık ve görüntüyü aldık. Bu aşamada herhangi bir problemle karşılaşırsanız mesaj atabilirsiniz, seve seve öğretmeye çalışırım. 

İyi kodlamalar... 💪😍