Power Apps’de Özel Bağlayıcı (Custom Connector) Oluşturma

Bu makalede public bir restful API kullanılarak Power Apps’de özel bağlayıcı (Custom Connector) oluşturulmasıyla ilgili bilgiler bulacaksınız.

Herkese merhaba,

Bu yazımda Microsoft’un bize sunduğu bağlayıcıların dışında nasıl bağlayıcı oluşturabileceğimizi anlatacağım. Bu yazıyı okumadan önce Connector’lerle ilgili detaylı bilgi için şu yazımı mutlaka okumanızı tavsiye ederim.

Microsoft’un 275+ veri kaynağının dışında kendi bağlayıcınızı oluşturmanıza imkan veren olgu Custom Connector’lerdir. Custom connector oluştururken restful API’lar kullanabilirsiniz. Mesela SQL server’dan veri almak istediğinizde doğrudan SQL’e bağlanmak yerine verileri API ile almak isteyebilirsiniz. Bu durumda kendi API’larınızı oluşturabilirsiniz ya da benim aşağıda kullandığım gibi public bir API tercih edebilirsiniz.

Kullandığım public API Pokemon, burada tüm pokemonların listesi ve özellikleri yer alıyor ancak ben tamamını kullanmayacağım sadece listedeki 5 pokemonu almak benim için yeter. Bunun için querystring ile 5 pokemonu çağırıyorum. Aşağıda gördüğünüz gibi textbox’a “pokemon?limit=5” yazıp “submit” ediyorum ve bana 5 adet pokemonun isim ve url’lerini listeliyor. Custom connector oluştururken veri alacağım restful API bu olacak. Burada hostumun pokeapi.co ve base url‘imin /api/v2/ olduğuna dikkat edin çünkü bunu Power Apps’de API tanımlarken kullanacağız.

Bu arada Power Apps’de JSON format kullandığımız için aşağıdaki kutucuktan JSON tipine geçebilirsiniz.

API kısmını hallettiğime göre şimdi power app studio’ya gidip custom connector’ümü oluşturabilirim. Aşağıdaki adresteyim.

Power Apps > Data> Custom Connector> New Custom Connector > Create from Blank

Gördüğünüz gibi Azure Service, Postman veya Github’dan veri çekebilirsiniz. Ancak ben bağlayıcımı sıfırdan yaratmak istediğim için “create from blank” diyorum.

Burada madde madde ilerlemekte fayda var.

Önce connector’e isim veriyoruz: “CustomConenctorTrial” ve Continue ile devam ediyoruz ve adımlara geçiyorum.

1. General Information: Genel bilgileri gireceğimiz 1. adım açılıyor. Özel bağlayıcınıza bir resim ve açıklama ekleyebilirsiniz. Schema https’i seçiyorum çünkü API’ım https ile başlıyor ve benden istediği, yukarıda da belirttiğim host ve base url bilgilerini giriyorum.

Security ile ilerliyorum ve 2. adım güvenlik adımına geçiyorum.

2. Security: Burada ilk olarak authentication tipini soruyor. Power Apps’te herhangi bir bağlayıcı kullanmadan önce, kullanıcının backend serviste kimlik doğrulaması yaparak bir bağlantı oluşturması gereken durumlarda authentication kullanılır. Aşağıda doğrulama tiplerini görebilirsiniz. Kendinize en uygun olan kimlik doğrulamayı seçebilirsiniz.

No Authentication: Herhangi bir kullanıcının bağlayıcıyı kullanmasına izin verdiğimiz durumlarda kimlik doğrulama istemeyiz. Bağlayıcıya herhangi biri bağlantı oluşturabilir. Bu durumda No authentication seçilir.

Basic Authentication: Bağlayıcıyla bağlantı kurmak için kullanıcı adı ve şifrenin istendiği basit doğrulama tipidir.

Parameter label altına girdiğim RiseTechnology kullanıcı adı, ***** ise şifre olacaktır. Herhangi biri bağlayıcınıza bağlanmak istediğinde istenilen kullanıcı adı ve şifreyi oluşturmuş oluyorsunuz böylece.

API Key Based Authentication: Kullanıcı bağlantı oluştururken API key’i isteyen doğrulamadır. Parameter label kullanıcının göreceği alandır. Parameter location, istek yapıldığında API key’in servisinize header olarak mı yoksa query dizisi olarak mı gönderilmesini istediğinizi belirttiğiniz yerdir.

Oauth 2.0: Oauth 2.0 kimlik doğrulama framework’ünü kullanan doğrulama tipidir. Bu doğrulama tipini kullanmadan önce uygulamanın servise kaydedilmesi gerekir-ki böylece kullanıcılar için erişim token’larına ulaşım sağlanır. Aşağıdaki alanlar doldurularak Oauth 2.0 kimlik doğrulamayı kullanabilirsiniz.

Identity provider: Generic Oauth 2.0 ve Azure Active Directory gibi hatta Facebook, Github ve Google gibi birkaç özel kimlik sağlayıcıları da destekler.

Client ID: Servise kaydettiğiniz uygulamanın client ID’si

Client Secret: Service kaydettiğiniz uygulamanın cliet secret’ı

Authorization URL: Servisle kimlik doğrula yapmak için API endpoint’i

Token URL: Kimlik doğrulama yapıldıktan sonra erişim token’ı sağlayacak API endpoint’i

Refresh URL: Erişim token’ının süresi dolduktan sonra yenileme için API endpointi

Ben herhangi bir kimlik doğrulama istemiyorum dolayısıyla “no authentication” seçip 3. adım’a yani Tanım kısmına geçiyorum.

3. Definition: Öncelikle action tanımlıyoruz, Aksiyonun genel bilgilerini Summary ve description kısmında giriyoruz. OperationID’ye Pokemon listesini alacağım için GetPokemons demeyi tercih ediyorum. Visibility’yi important olarak seçiyorum.

Request kısmına geçiyorum. Import from sample dediğimde açılan pencereye API’ın verb’ünü GET seçip URL’ini giriyorum ve import diyorum. Headers kısmını boş geçebilirsiniz.

Import dediğinizde anasayfada girdiğiniz URL’e dayanarak özet tabloyu karşınıza getirecek. Mesela verdiğim URL query içerdiği için özet kısmında query’yi kendisi getiriyor. Ayrıca doldurmama gerek kalmıyor.

Benzer şekilde Response kısmını da dolduruyorum. +Add default responce diyip Pokemon URL’ine gidiyorum ve JSON formata çevirip kopyalıyorum ve body’ye yapıştırıyorum, import diyorum.

Son olarak verdiğiniz url ile response’u karşılaştırıp doğruluğunu sağladığında aşağıdaki onayı göreceksiniz.

Test’e gitmeden önce connector’u yaratmayı unutmayın! Create Connector dedikten sonra test ediyorum.

4. Test: Bu aşamada GetPokemons action’ı test ediyorum ve limit’e 5 yazıyorum, test operation diyorum.

Gördüğünüz gibi benim verdiğim restful API’dan 5 adet pokemonu isim ve URL ile birlikte getirdi. Şimdi bu verileri uygulamamda istediğim yere bağlayabilirim.

Power Apps> Data> Custom Connector dediğimde oluşturduğum bağlayıcıyı görüyorum.

Bazen oluşturduunuz yeni custom connector’un listenizde görünmesi 5-10 dk zaman alabiliyor. Bu noktada biraz beklemenizi tavsiye ederim.

Detay’ına girdiğimde bu connector’u kimin oluşturduğunu, tanımını ve doğrulama tipini görüyorum.

Artık benim de istediğim API’dan veri alabileceğim bir bağlayıcım olduğuna göre uygulama içinde bu verileri uygun kontrollerin içine bağlayıp kullanabilirim.

Umarım faydalı bir yazı olmuştur.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s