2. bölümde APIM üzerinden Developer Portal oluşturup publish etmiştim. Bu bölümde de Azure API Management (APIM) üzerinden API tanımı yapacağım. Resim-1‘de göreceğiniz gibi oluşturduğumuz APIM servisini Azure Portal üzerinden görüntülediğimde sol menüde APIs altında yer alan yine aynı isimli seçeneği seçtiğimde karşıma yeni API eklemek için farklı seçenekler çıkıyor. Buradan boş bir API tanımı (Blank API) yapabilir, mevcut API’larınızı url vererek (OpenAPI), WADL ya da WSDL ile servise tanımlayabilirsiniz. Bunlar dışında Logic App, App Service ve Function App de ekleyebiliyorsunuz.
Resim-1
Blank API ile başlayalım. Blank API tanımı için Resim-2‘deki bilgileri girerek hızlıca bir API oluşturabilirsiniz.
Resim-2
Eğer Basic yerine Full seçerseniz de Resim-3’te göreceğiniz bilgileri doldurmanız gerekecek. Basic ile devam ediyorum ve apim-blank adında bir API tanımı yapıyorum, Web service URL ve API URL Suffix‘i boş bırakıyorum.
Resim-3
Create butonuna bastıktan sonra karşıma Resim-4‘te göreceğiniz ara yüz çıkıyor. Design sekmesinden API’a policy’ler tanımlayabiliyoruz. Policy tanımı yapabileceğimiz 4 kısım var:
- Frontend
- Inbound processing
- Backend
- Outbound Processing
Resim-4’te göreceğiniz ok işaretlerinden de anlayacağınız üzere request’in gelişi ve response’un dönüşü sırasında policy tanımı yapabileceğimiz farklı katmanlar bulunuyor. Inbound, Backend ve Outbound için farklı tiple policy’ler ekleyerek request ve response üzerinde herhangi bir kod değişikliği yapmadan çok hızlı bir şekilde modifikasyonlar yapabiliyoruz.
Resim-4
Frontend katmanında kalem işaretine tıkladığımda Resim-5‘te göreceğiniz bir JSON dosyası açılıyor, buradan ilgili alanları değiştirebilirsiniz.
Resim-5
Inbound Processing katmanında ise Resim-6‘da göreceğiniz gibi bir XML dosyası ve hazır snippet’lara erişebiliyorsunuz. Snippet kullanmadan da ctrl+space ile otomatik tamamlama özelliği destekleniyor. Burada göreceğiniz <base /> ise önce hangi policy çalışsın (bir önceki katmanda yer alan policy’den önce mi sonra mı) kısmını belirlemek için kullanılıyor. Policy’leri API bazlı, metot bazlı ve product bazlı olarak ekleyebiliyoruz. Product konusuna bir sonraki bölümde bahsetmek istiyorum ama kısaca birden fazla API’ı gruplamak için kullandığımızı söyleyebilirim.
Resim-6
Şimdi yeni bir operation yani bir method ekleyelim. Resim-7‘de göreceğiniz gibi sol taraftaki Add operation‘a tıkladığımda açılan ekranda Display name, Name, URL (HTTP method seçimi ile), Description ve Tags alanları çıkıyor. Alt kısımda ise Template, Query, Headers, Request ve Responses seçenekleri mevcut. Bu kısımlardan da ilgili tanımlamaları yapabiliyorsunuz. Örnek olarak kitap listesi getiren bir servis ekliyorum.
Resim-7
Bu servise bir de örnek response ekleyeceğim, Responses sekmesinden öncelikle Add response ile 200 OK yani HTTP response code’u, Represantations‘a da bir JSON array ekliyorum (Resim-8).
Resim-8
Backend olarak henüz bir sunucuya bağlamadığımız için burada test edeceğimiz en güzel özelliklerden birisi de özellikle uygulama test aşamasındaki büyük sorunlardan biri olan mocking, yani test verisi hazırlamak ve bu verileri servisin dönmesini sağlamak. APIM üzerinde mock responses sayesinde bu sorundan kolaylıkla kurtulabiliyoruz.
Metoda Inbound Processing üzerinden bir Inbound policy eklemek istiyorum. Burada Resim-6‘da kullandığımız yönetin yanında Resim-9‘da göreceğiniz gibi daha kolay bir şekilde de policy tanımı yapabiliyoruz.
Resim-9
Mock responses seçeneğini seçtikten sonra Resim-10‘da göreceğiniz gibi bir ekran karşılaşıyorum. Burada da response olarak hangi HTTP koduna karşılık olarak mock dönmek istediğimi seçiyorum (200 OK).
Resim-10
Değişiklikleri kaydettikten sonra Resim-11‘de göreceğiniz gibi üst kısımda Mocking is enabled mesajı ve Inbound processing altında mock-response policy’yi görebiliyorum.
Resim-11
Şimdi sırada bu değişiklikleri test etmek var. Üst menüde yer alan Test sekmesi üzerinden API üzerindeki metotları test edebiliyoruz (Resim-12). Test sonrasında da beklediğim sonucu başarılı bir şekilde görebiliyorum.
Resim-12
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
https://docs.microsoft.com/en-gb/azure/api-management/
TAGs: Azure, Azure Portal, Yazılım Geliştiriciler için Azure, API, API Management, API, Application Programming Interface, Policy, Inbound Policy, HTTP Request, HTTP Response, Mock, Mock Response