Azure API Management İle RESTful Web Servis Entegrasyonu Nasıl Yapılır?

Azure API Management (APIM) üzerinde web servis entegrasyonunun nasıl yapıldığını incelemeye çalışacağız.

Entegrasyon işlemlerimizde;

  • API Management için daha önce oluşturduğumuz servisimizi kullanacağız. Bununla ilgili yazımıza http://yahyasonmez.com/azure-api-management-nedir-nasil-olusturulur/ sayfamızdan ulaşabilirsiniz.
  • APIM Publisher Portal ile web servis (metodlarını) operasyonlarını tanımlama, RESTful olarak yayınlama ve yetkilendirme kısmını,
  •  APIM Developer Portal ile yayınlanan web servislere erişim, istek gönderme ve yanıt alma kısımlarına değineceğiz.
  •  Web servis olarak; https://jsonplaceholder.typicode.com/ üzerindeki RESTful metodlarını,
  •  Test aracı olarak: Postman (indirme linki -> https://www.getpostman.com/ ) kullanıyor olacağız.

Öncelikle daha önce test için oluşturduğumuz API Management servisimizi seçmemiz gerekiyor. Bunun için Portal üzerinden “API Management services” menüsünü tıklayalım, açılan listeden West Europe veri merkezinde bulunan “apimngtest1” i seçelim.

02-azure-api-management-services-select-yahyatest1

Daha sonra sol taraftaki menüden “API MANAGEMENT” altındaki “APIs” seçeneğini tıklayalım. Sağ tarafta açılan pencereden “Add API” butonuna tıklayıp açılan listeden “Blank API” (Boş API) seçeneğini seçelim.

03-azure-api-management-services-add-a-new-api

Bu arada mevcut liste aşağıdaki şekildeki gibidir. İsterseniz API Management ile otomatik olarak entegrasyon yapabileceğiniz servis listesinden istediğinizi seçip işlemlerimize devam edebiliriz. Bu listede “openAPI” , “WADL” , “WSDL”, “Logic App”, “API App” ve”Functions App” servisleri bulunuyor. İlerleyen zamanlarda listedeki servislerle ilgili de makaleler yazmayı düşünüyorum.

03-01-Azure-APIM-services-add-a-new-blank-api-openAPI-WADL-WSDL-Logic-App-API-App-Functions-App

Şimdilik “Blank API” seçerek yolumuza devam edelim. Karşımıza boş API oluşturma penceresi gelecektir.

04-azure-api-management-services-create-a-blank-api

Buradaki alanları açıklayalım.
Display name“: Servisi yayınladıktan sonra dış dünyada görünecek olan adı.
Name“: Servisin adı.
Description“: Servisin açıklaması.
Web service URL“: Entegrasyon yapacağımız web servisin adresi. Biz “http://jsonplaceholder.typicode.com/” adresini kullanacağız.
URL scheme“: Servis adresinin erişim protokolü. Biz “HTTPs” seçiyoruz. “Both” seçersek hem HTTP hem de HTTPS olarak servise erişebiliyoruz.
API URL suffix“: API adresine erişim için kullanılan son ek. Biz “jsontest” olarak yazıyoruz ve otomatik olarak “Base URL” alanına geldiğini görüyoruz.
Products“: Oluşturulan API yayınlama aşamasında tercih edilen ürün veya yetki grubu diye tanımlayabiliriz. Şuan için boş bırakıyoruz. ileride tekrar değineceğiz.
Version this API“: Oluşturulan API’da versiyonlama kullanılmasını sağlar. Ör: “https://apimngtest1.azure-api.net/jsontest/v1/” gibi.  Şuan kullanmayacağımız için bu alanı işaretlemiyoruz.

Bilgileri yukarıdaki şekilde girip “Create” butonuna basarak API oluşturma işlemini başlatalım.

Bundan sonra APIM Publisher Portal e geçiş yapıp metot/operasyon tanımlamalarına devam edeceğiz.

APIM Publisher Portal Üzerinden (HTTP – GET) Metot/Operasyon Tanımlama

Bunun için önce Azure Portal üzerindeki “Publisher Portal” linkine tıklıyoruz. Karşımıza gelen portal ekranında sol taraftaki menülerden “APIs” seçiyoruz, sağ tarafta açılan ekranda ise az önce oluşturduğumuz “JsonPlaceHolder” servisini seçiyoruz. Burada karşımıza çıkan “ADD API” ve “IMPORT API” butonları yeni bir servis oluşturmaya veya mevcut servislerinizi içeri aktarmaya yarar. Şimdilik bunlara fazla değinmeden devam ediyoruz.

05-azure-api-management-services-publisher-portal-select-api

Bu adımdan sonra sıra metotlarımızı tanımlamaya geldi. Farklı metotları tanımlayabilmemiz adına RESTful servislerde en fazla kullanılan GET, POST, PUT ve DELETE yöntemlerini tercih ettim. Aşağıdaki tabloda HTTP istek yöntemleri ve metotların listesini inceleyebilirsiniz.

GET /posts?userId=1
POST /posts
PUT /posts/1
DELETE /posts/1

Metotları tanımlamak için APIM Publisher Portal üzerinde sol tarafta bulunan “APIs” menüsüne tıklayalım, sağ taraftaki pencereden “Operations” sekmesi altındaki “ADD OPERATION” butonuna basalım.

06-azure-api-management-services-publisher-portal-operations-add-operation

Karşımıza aşağıdaki şekilde metot tanımlama ekranı gelecektir. “Signature” sekmesi üzerinde gerekli tanımlamaları yapıyoruz.
HTTP verb” alanınından GET yöntemini seçiyoruz,
URL template” alanında “/yazilar?kullaniciId={id}” şeklinde bilgilerimizi girelim. Gelen id bilgisi (1, 2, 3, vb.) değişken parametre olacağı için süslü parantezler arasında ifade ediyoruz.
Rewrite URL template” alanında gelen isteği yönlendireceğimiz ve eşleştireceğimiz hedef adres ve parametreleri belirtiyoruz. Eşleştirmeleri farklı renklerle göstermeye çalıştım.
Display name” alanında ise servisi yayınladığımızda geliştiricilerin göreceği şeklini belirtiyoruz. URL template alanında yazdıklarımız otomatik olarak buraya geliyor fakat istersek değiştirebiliriz.
Description” alanına oluşturduğumuz metotla ilgili açıklama bilgilerini giriyoruz.

07-azure-api-management-services-publisher-portal-new-operation

APIM Publisher Portal Üzerinden (HTTP – GET) Metot Parametreleri Tanımlama

Daha sonra Request menüsü altındaki “Parameters” sekmesine tıklayalım. Burada aşağıdaki şekilde parametre tanımlama ekranı gelecektir. Normalde bu alanda herhangi bir parametre tanımlamadık fakat otomatik olarak “id” parametresinin varsayılan olarak “string” tipinde tanımlandığını görüyoruz.
08-azure-api-management-services-publisher-portal-new-operation-url-template-parameters
NAME” alanına parametre adını,
DESCRIPTION” alanına parametre açıklamasını,
TYPE” alanında “number” tipini,
VALUES” alanında parametrenin alabileceği değerleri girebiliyoruz. Herhangi bir değer girmek zorunda değiliz. Fakat geliştiricilere kolaylık olması açısından isterseniz örnek verileri belirtebilirsiniz.
Yeni bir parametre eklemek istiyorsak “ADD QUERY PARAMETER” butonuna basıp yukarıda bahsetmiş olduğumuz işlemleri tekrar ederek ekleme işlemlerini gerçekleştirebiliriz.
Son olarak altta bulunan “Save” butonuna basarak (http get) metot tanımlama işlemini tamamlıyoruz.

APIM Publisher Portal Üzerinden (HTTP – POST) Metot/Operasyon Tanımlama

Yeni bir metot tanımlamak için yine APIM Publisher Portal üzerinde sol tarafta bulunan “APIs” menüsüne tıklayalım, sağ taraftaki pencereden “Operations” sekmesi altındaki “ADD OPERATION” butonuna basalım. Aşağıdaki ekranda gördüğümüz gibi kendi bilgilerinizi girebilirsiniz. Burada farklı olarak “HTTP verb” alanında “POST” yöntemini seçiyoruz. Herhangi bir parametremiz bulunmadığı için “URL template” alanında sadece “/yazılar” bilgisini girip yönlendirme yapmak içinde “Rewrite URL template” alanına “/posts” bilgisini giriyoruz. “Display name” otomatik olarak dolacaktır. “Description” alanına metotla ilgili açıklama bilgisini giriyoruz.

09-azure-api-management-services-publisher-portal-new-post-operation

APIM Publisher Portal Üzerinden (HTTP – PUT) Metot/Operasyon Tanımlama

Operasyon oluşturmak için “APIs”  / “Operations” /  “ADD OPERATION” linklerini tıklayalım. Bilgileri aşağıdaki şekilde olduğu gibi girelim.

10-azure-api-management-services-publisher-portal-new-put-operation

“REQUEST” altındaki “Parameters” linkine tıklayıp aşağıdaki şekilde parametre bilgilerimi tanımlayalım. Alta bulunan “Save” butonuna basıp kaydedelim.

11-azure-api-management-services-publisher-portal-new-put-operation-parameters

APIM Publisher Portal Üzerinden (HTTP – DELETE) Metot/Operasyon Tanımlama

Operasyon oluşturmak için “APIs”  / “Operations” /  “ADD OPERATION” linklerini tıklayıp bilgileri aşağıdaki şekilde gibi girelim.

14-azure-api-management-services-publisher-portal-new-delete-operationDevamında “REQUEST” altındaki “Parameters” linkine tıklayıp aşağıdaki şekilde parametre bilgilerimi tanımlayalım. Alta bulunan “Save” butonuna basıp kaydedelim.

15-azure-api-management-services-publisher-portal-new-delete-operation-parameters

Tüm metotlarımızı ve parametrelerimizi tanımladığımıza göre operasyon listesi aşağıdaki şekilde olmalıdır.

16-azure-api-management-services-publisher-portal-operations-list-test

APIM Publister Portal Üzerinde API Yayınlama ve Yetkilendirme İşlemleri

Bunun için öncelikle Publisher Portal üzerinde sol taraftaki menüden “Product” seçilir. Karşımıza aşağıdaki şekilde ekran gelecektir.

17-azure-api-management-services-publisher-portal-products-list

İçerisinde varsayılan olarak “Starter” (Başlangıç) ve “Unlimited” (Limitsiz) şeklinde iki adet product yer alıyor. Bunlara erişebilen “Administrators”, “Developers” ve “Guests” gruplarını görebiliyoruz. Ayrıca  bu product ların”Published” (Yayınlanmış) olarak durumlarını görebilmekteyiz. Bunlarla ilgili bu kısa açıklamadan sonra “ADD PRODUCT” düğmesine tıklayalım.

Açılan pencerede “Required Subscription” (Abonelik Gerekli) işaretini kaldıralım.
Title“: Başlık alanı.  Biz “Genel Test” olarak girelim.
Description“: Açıklama alanı. Ürün veya grupla ilgili açıklama bilgisini girelim.

18-azure-api-management-services-publisher-portal-add-ne-product-require-subscription

Bilgileri girdikten sonra altta bulunan “Save” butonuna basarak oluşturma işlemini tamamlayalım.
“Products” sayfasındaki listede oluşturduğumuz “Genel Test” başlıklı ürün grubunu “Not published” durumunda görmemiz gerekiyor. Üzerine tıkladığımızda aşağıdaki ekran gelecektir.

19-azure-api-management-services-publisher-portal-product-publish-add-api-to-product

Buradaki “Summary” sekmesi altındaki “ADD API TO PRODUCT” butonuna basıp aşağıdaki şekilde açılan pencereden “JsonPlaceHolder” API seçip “Save” butonuna basalım.

20-azure-api-management-services-publisher-portal-add-api-to-product

Bu şekilde oluşturduğumuz API ile ürün grubunun içerisine eklemiş olduk. Devamında “PUBLISH” düğmesine basalım, gelen ekranda “Yes, publish it” butonuna basıp, servisimizi bu ürün grubuyla birlikte yayına açalım.21-azure-api-management-services-publisher-portal-product-publish

Servisimize herkesin erişebilmesi için en son adım olarak “Visibility” sekmesine tıklayarak geçiş yapalım. Servisimizi geliştiriciler ve ziyaretçilerin görmesi için “Developers” ve “Guests” yetkili gruplarını seçiyoruz. Altta bulunan “Save” butonuna basarak servisimizin herkes tarafından görünmesini sağlamış oluyoruz.22-azure-api-management-services-publisher-portal-product-visibility-developer-guests

APIM Develpoer Portal Üzerinde API Erişimi ve TEST İşlemleri

Bu aşamadan sonra Developer Portalimize “https://apimngtest1.portal.azure-api.net/” geçiş yapıyoruz. Aşağıdaki şekilde bir ekran gelecektir.

23-azure-api-management-services-developerer-portal-api-list-jsonplaceholder

Burada “APIS” menüsüne tıkladıktan sonra yayınladığımız “JsonPlaceHolder” API listede görünecektir. Bunu seçtikten sonra aşağıdaki şekilde, sabırla beklediğimiz ekranla karşılaşacağız. 🙂 Aslında yaptığımız tüm bu işlemlerin son halini aşağıdaki ekranda çıktı olarak görebiliyoruz.

24-azure-api-management-services-developerer-portal-api-list-jsonplaceholder-test-http-get

Test etmek için sol taraftaki listeden “GET /yazilar?kullaniciId={id}” metodunu tıklayalım. Açılan penceredeki “Try it” düğmesine basalım. Açılan ekranda “id” parametresinin değerine “2” bilgisini girelim ve altta bulunan “Send” butonuna basalım.

25-azure-api-management-services-developerer-portal-api-list-jsonplaceholder-test-http-get-send

Test sonucu aşağıdaki şekilde gelecektir.

26-azure-api-management-services-developerer-portal-api-list-jsonplaceholder-test-http-get-send-response

Umarım faydalı olmuştur. Bir sonraki makalemizde görüşmek dileğiyle.

Yahya Sönmez

Enterprise Integration - Azure API Management - Azure Function Apps - Azure Logic Apps - BizTalk Server - Azure Service Bus - Azure Redis Cache - Azure SQL - Asp.NET Core teknolojileri kullanarak web tabanlı kurumsal projeler geliştirmekte. Şuan serverless teknolojilerle birlikte hybrid mimari yapıları üzerine çalışmakta.

You may also like...

1 Response

  1. 7 Şubat 2018

    […] API Management İle RESTful Web Servis Entegrasyonunun nasıl yapıldığı hakkında yazımıza  http://yahyasonmez.com/azure-api-management-ile-restful-web-servis-entegrasyonu-nasil-yapilir/  sayfasından […]

Bir cevap yazın

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