Azure Logic Apps (Azure Mantıksal Uygulamalar) ile Uygulama Geliştirme – HTTP Request-Response

Azure Logic Apps ile ilk uygulamamıza başlamadan önce konu hakkında bilgi edinmek isteyenler bu sayfamızı ziyaret edebilirler.

Logic Apps ile HTTP üzerinden istek alan ve cevap döndüren ilk uygulamamızı oluşturmaya başlayalım. Bunun için öncelikle https://portal.azure.com üyeliğinizin olduğunu varsayarak aşağıdaki adımları sırayla takip ediyoruz.

1 – Panel üzerinde sol taraftaki menüden ” New / Enterprise Integration / Logic App ” uygulamasını seçiyoruz.

 

01-new-enterprise-integration-logic-apps

2 – Açılan pencerede oluşturacağımız logic app ile ilgili bilgilerimizi girdikten sonra “Create” butonuna basarak işlemin gerçekleşmesini sağlıyoruz.

Name: Uygulamamızın adı (Harf, rakam ve ‘-‘, ‘(‘, ‘)’, ‘_’, ‘.’ karakterlerini içerebilir)
Subscription: Azure aboneliklerinizden istediğinizi seçebilirsiniz.
Resource Group: Kaynak grubu. Kaynaklarınızı gruplandırmak için Azure tarafından kullanılan kategorilendirme tarzı bir yapı.(Harf, rakam ve ‘-‘, ‘(‘, ‘)’, ‘_’, ‘.’ karakterlerini içerebilir)
Location: Uygulamamızın yayınlanacağı bölge. Türkiye’ye en yakın “West Europe” bölgesini seçiyoruz.
Pin to dashboard: Uygulamamızı Azure Portal dashboard ekranında sabitler.
Automation options: Uygulama ile ilgili template oluşturup, kütüphanenize kaydedebilir, bilgisayarınıza indirebilir veya azure marketplace üzerinde yayınlayabilirsiniz.

02-create-logic-app-info

02-01-logic-apps-deployments-succeeded

 

 

 

2.1 – İşlemlerin tamamlanma durumunu portal üzerindeki sağ üst tarafta yer alan bildirim ikonundan takip edebilirsiniz. İlgili bildirim mesajına tıkladığınızda işlemlerin hangi aşamada olduğu hakkında detaylı bilgilerin olduğu bir sayfaya yönlendirileceksiniz.

02-02-logic-app-deployments-succeeded-detail

 

 

 

 

 

 

 

 

 

 

2.2 – Bu işlemlerin sonrasında portal üzerindeki sol taraftaki menüden “All Resources” menüsü seçilir, açılan sayfada arama kutucuğuna  oluşturulan logic app ismi yazılır ve ilgili logic app bulunur. Bu işlemi azure üzerindeki tüm kaynaklarınıza erişim için kullanabilirsiniz.

02-03-logic-app-all-resources-search

3 – Logic App seçildikten sonra “Logic App Designer” sayfasında, karşımıza uygulama ile ilgili mevcut template listesi gelir. Bu template listesinden istediğimizi seçebilir veya kendimize özgü boş bir logic app oluşturmak istiyorsak, ilk sırada yer alan “Blank LogicApp” template seçip işlemlerimize devam edebiliriz. Şuanki uygulamamıza uygun olan “HTTP Request-Response” template listenin aşağılarına indiğinde görebilirsiniz. Biz bu template seçiyoruz.

03-logic-app-choose-a-templateTemplate seçildikten sonra karşımıza bu template ile ilgili kısa bir bilgi içeren pencere açılıyor. “Receive a message over HTTP, perform some other work of your choosing, and then return a response.” Açıklamada http üzerinden mesaj alıp seçtiğimiz diğer işlemleri gerçekleştirdikten sonra bir yanıt döndüreceğimiz belirtiliyor. Bu template i kullan “Use this template” butonuna basarak Logic App Designer sayfamızda gerekli işlemler için çalışmalarımıza başlıyoruz.

03-01-logic-app-template-http-request-response

4 – Logic App Designer sayfamızda template bilgisinde de belirtildiği üzere Request ve Response eylemleri (action) karşımıza çıkıyor. Dikkat edersek Request eylemindeki URL alanında “URL will be generated after save” / “URL, kaydedildikten sonra oluşturulacaktır” açıklamasına göre hareket edersek, ilk yapmamız gereken Designer sayfamızın sol üst tarafında yer alan “Save” düğmesine basarak URL oluşturulmasını sağlayalım.

04-logic-apps-designer-save-discard-run-designer-code-view-templates-available-apis-help

04-01-logic-apps-designer-http-request

Kayedetmeden önceki hali

04-01-02-logic-apps-designer-http-request-url-generated

Kaydettikten sonraki URL oluşturulmuş hali

Uygulamamıza istek göndereceğimiz ve cevabını alacağımız URL in oluşmasını sağladıktan sonra, URL in hemen sağ tarafında bulunan kopyala ikonuna basarak kopyalama işlemini gerçekleştirebiliriz.

4.1 – Request eylemimizde URL in altında bulunan “Using the default values for the parameters” / “Parametreler için varsayılan değerleri kullan” açıklamasının sağ tarafında “Edit” linkini tıklıyoruz ve edit edilebilecek textarea alanının açılmasını sağlıyoruz. Bu sayede request edilebilcek olan mesajı ve şemasını düzenleyebilecek deuruma geliyoruz.  Textarea alanının üst tarafındaki “Request Body JSON Schema” / “İstek gövdesi JSON şema” açıklaması aslında textarea alanının ne işe yarayacağını bizlere söylüyor. Uygulamamızda kullanacağımız JSON tipinde veri için gerekli olan JSON şemasını hazırlıyoruz.

04-01-04-01-logic-apps-designer-http-request-json-schema2

Request Body

04-01-04-02-logic-apps-designer-http-request-json-schema2

Request Body JSON Schema

04-01-04-logic-apps-designer-http-request-json-schema1

HTTP Request Action

 

 

 

 

 

 

 

Request eyleminin sağ üst tarafındaki “” işareti dikkatinizi çekmiştir. Bu işarete tıkladığımızda bazı seçenekler görmekteyiz. Buradaki seçeneklerden;

Rename: Yeniden adlandırmayı sağlar,
Add a comment: Yorum eklemeyi sağlar,
Delete: Silme işlemi yapar.

5 – Request eylemimizle ilgili işlemlerimizi tamamladıktan sonra Response eylemimizle ilgili işlemlerimize geçebiliriz. Buradaki
Status Code: İsteğe cevap olarak döneceğiniz HTTP durum kodu,
Headers: İsteğe cevap olarak döneceğiniz içerik tipi
Body: İsteğe cevap olarak döneceğiniz içerik nesnesi anlamına gelmekte.

Response eyleminin sağ üst tarafındaki “…” işaretine tıkladığımızda karşımıza gelen seçenekleri yukarıda açıklamıştık. Dolayısıyla açıklamalardaki bilgilere göre isterseniz işlemlerinizi gerçekleştirebilirsiniz.

Response eyleminde önemli olan “Body” textarea alanının altındaki “Add dynamic content” / “Dinamik içerik ekle” linkidir. Bu linke tıkladığımızda dikkat ederseniz “ad”, “soyad”,  “Personel” ve “Body” seçeneklerinin görünmesidir. Bu bilgileri Request eylemimizin kendisinden ve içerisindeki şemadan alıyor ve bizim kullanımımıza sunuyor. Eğer Request eylemimnden farklı eylemler veya nesneler olsaydı yine onların içeriklerini/parametrelerini de burada görebilecektik. “Status Code”, “Headers” ve “Body” alanlarına aşağıdaki şekilde bilgileri girdikten sonra Logic App Designer sayfamızın sol üst tarafındaki “Save” düğmesine basarak işlemlerimizi burada sonlandırabiliriz.

Parametreleri body alanına eklemek için;
1 – Body alanında istediğiniz yere farenin sol tuşu ile tıklayın,
2- Sağ tarafta açılan penceredeki parametre listesinden istediğinizi seçin

04-02-logic-apps-designer-http-response-add-dynamic-content

İşlemlere devam etmek istersek “New step” / “Yeni adım” düğmesine tıklayarak açılan seçeneklerden istediğimizi seçip süreci istediğimiz şekilde yönlendirebilir veya sonlandırabiliriz. İlerleyen zamanlarda bunlara değineceğiz fakat şimdilik kafa karışıklığı yapmaması için bu şekilde kısa ve yüzeysel bir bilgi, yeterli olur diye düşünüyorum.

04-03-logic-apps-designer-new-step
6 – Logic App uygulamamızın çalıştırılmasına ve test etme işlemlerine geçiş yapabiliriz. Servise HTTP üzerinden, JSON tipinde verileri request edip işlemlerimiz sonrasında response almayı istiyoruz ve şuan bu işlemler için Postman kullanacağız. Test işlemlerimizde Postman kullanacağım fakat tercihinize göre farklı yöntemlerle benzer işlemleri yapabilirsiniz.

Postman üzerindeki konfigurasyonu şu şekilde yapabilirsiniz.
Request URL: Logic Apps URL bilgisi (https://prod-00.westeurope.logic.azure.com:443/workflows/554#####)
Request Method: POST
Request Header: “Content-Type” ve “application/json”
Request Body: “Raw” ve “JSON(application/json)” seçtikten sonra textarea alanına aşağıdaki JSON verilerini yazabilirsiniz.
{
“Personel”: {
“ad”: “YAHYA”,
“soyad”: “SÖNMEZ”
}
}

Request parametrelerinin alt tarafındaki sekmede ise Response bilgilerini yani {“AdSoyad”:”YAHYA SÖNMEZ”}, 200 OK, 300 ms  vb.. görebilirsiniz.

05-01-logic-apps-test-postman

HTTP Request-Response Test İşlemi ve Sonucu

05-02-logic-apps-test-postman

HTTP Request Header Parametresi

 

 

 

Şemaya uygun olmayan JSON verisi gönderirsek, Logic App bize yapılan işleme göre ilgili hata mesajını dönecektir.
Ör:
“soyad” yerine “soyadsoyad” şeklinde bir alan adı belirterek göndermeye çalıştığımızda aşağıdaki şekilde hata mesajıyla karşılaşıyoruz.

{“error”:{“code”:”NoResponse”,”message”:”Sunucu yukarı akış sunucusundan bir yanıt almadı. İstek izleme kimliği: ‘085871924683088648677390#####’.”}}

6 – Oluşturuğumuz Logic App hareketlerini monitor etmek istediğimizde Logic App işlem sekmesinde “Overview” seçildiğinde şu şekilde bir bilgilendirme ekranı karşımıza geliyor.

05-03-logic-apps-log1

05-04-logic-apps-log2Listede yer alan bir kısım işlem hareketlerinden “Succeeded” veya “Failed” olan herhangi bir işlemin detayını (nasıl bir mesaj gelmiş, neye dönüşmüş ve nasıl response edilmiş vb.) görmek isterseniz üzerine tıklayıp “Logic app run” penceresinin açılmasını sağlayabilirsiniz.

05-04-logic-apps-run-details

Logic App işlem sekmesinde “MONITORING” altındaki “Diagnostics” linki seçildiğinde ise aşağıdaki şekilde bir infografik yer alıyor.

05-05-logic-apps-monitoring-diagnostics1

Azure Logic Apps uygulaması için yukarıda verilen bilgilerden çok daha fazlası Azure portal içerisinde görebilirsiniz. İlerleyen zamanlarda daha fazla detaylı bilgiler paylaşmayı ümit ediyorum. Umarım faydalı bir yazı olmuştur. Olumlu olumsuz her türlü yoruma açığım. Yanlış olarak ifade ettiğim yerler varsa geri bildirimlerinize göre gerekli düzenlemeleri yapmaya çalışacağım.

Hoşçakalın…

Yahya Sönmez

BizTalk Server - Azure Enterprise Integration - Azure Logic Apps - Azure API Management entegrasyon çözümleri konusunda geliştirme yapmakla birlikte Asp.Net MVC ile web tabanlı kurumsal projeler geliştirmekteyim.

You may also like...

1 Response

  1. drms diyor ki:

    Merhaba,

    Öncelikle elinize sağlık, Bu yukarıda yaptığımız işlemin ben herhangi ekstra bir tetikleme olmadan otomatik günde 2 kez tekrarlanmasını sağlamaya çalışıyorum. Ancak En üste Schedule yani yineleme eklediğimde alttaki adım request değil response oluyor. Herhangi bir yerden tetikleme olmadan bana günde iki kez data vermesini nasıl sağlarım? Bir fikriniz varsa ve paylaşabilirseniz çok sevinirim. Bir de HTTP ile Request adımları arasındaki farkı biliyorsanız 🙂 o konuda da aydınlığa kavuşmak isterim 🙂 Çok teşekkürler

Bir Cevap Yazın

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