TCMB bankası, sunduğu servis verisini XML formatında göstermektedir. Servise istek gönderildiğinde ise tüm döviz kurları tek bir XML dökümanında  yanıt olarak sunulmaktadır. APINIZER üzerinden yapılan bu çalışmada ise kullanıcı kod parametresi göndererek sadece istediği döviz kurunun verisine erişmektedir.

TCMB servisinin eklenme aşamaları

Servis eklenip üzerinde işlemler yapılırken aşağıdaki aşamalar izlenmektedir

  • Kullanıcı API List ekranından Mirror API seçeneği seçerek bu servisin yapısına uygun bir şekilde bir API tanımlamalıdır.



  • Mirror API seçeneği seçildikten sonra açılan ekranda API'ye ait endpoint tanımı yapılması gerekmektedir. 


  • Endpoint oluşturma aşamasında TCMB servisinden döviz kurununun bilgisini döviz kuru türüne göre dinamik olarak elde edebilmek için döviz kuru çeşidi query parametre olarak servise gönderilmektedir. Parameters bölümünde bulunan butonu tıklanarak  uç noktaya ait parametre tanımı yapılmaktadır. Bu servisimiz için tanımlanması gereken query parametre tanımı aşağıdaki gibi olmalıdır. Bu tanımlanmış olan değişken bize query parametre olarak kod query parametresini URL'de beklediğini belirtmektedir. kod parametresi olarak örneğin ; ?kod=USD olarak gönderim yapılabilmektedir.



 


  • Parametre tanımı yapıldıktan sonra tanımlanmış olan parametre seçilerek uç noktaya eklenir.


  • Uç nokta tanımı yapıldıktan sonra sol altta bulunan Create Gateway butonu tıklanarak API'ye ait geçit tanımı yapılır.





  • Geçit tanım ekranında relative path bilgisi girildikten sonra poliçe tanımı için Go to Configuration butonu tıklanarak konfigürasyon tanım ekranına geçilir.





  • Konfigürasyon ekranında 1.bölgede  bulunan poliçe ekleme butonu tıklandığında açılan poliçe menüsünden  REST API Call poliçesi seçilir.




  • Mirror API , yapı olarak gönderilen istek ve yanıtın aynı olmasıdır. Bu yapıda geçite gönderilen isteğe istenilen yanıtın alınması için REST API Call poliçesi eklenilerek öncelikle yanıt beklenilen servise istek gönderilir. Dönen yanıt , gönderilen isteğin gövdesi ile değiştirilerek yanıt haline getirilir. Dönecek olan yanıttan alınacak body bilgisi için bu bilgiyi almak adına bir değişken tanımlamak gerekmektedir.




  • Değişken tanımı yapıldıktan sonra REST API çağrısı sonrası dönecek olan yanıtın gövdesine ihtiyaç duyduğumuz için bu yanıtı body değişkeni sayesinde elde edeceğiz. Modify original message after REST API Call bölümü seçildikten sonra Clear Original Body Content seçeneği işaretlenir. Daha sonra Source for New Body Content seçenekleri arasından Use a Variable seçeneği seçilerek Location of New Content alanına tanımlamış olduğumuz Body değişkeni atanır. Böylece REST API çağrısından dönen gövde değeri ile orjinal mesajın gövde değeri değiştirilir.



  • REST API çağrısı sonucunda Merkez Bankası tüm döviz kurlarını tek bir XML verisi olarak sunduğu için parametreden gönderilen döviz çeşidi bilgisine göre veri dönüşümü gerekmektedir. Bu dönüşüm işleminde ise dönüşümü API'den dönen yanıt üzerinde yapacağımız için ve buna ek olarak Http isteklerine cevap olarak verilen yanıtlar da parametre bilgisine sahip olamayacağı için parametrede gönderilen kod bilgisini başlıklara(headers) eklemek için 2.bölgede bulunan Change Variable poliçesini kullanıyoruz. Burada yapılan işlem ise KodParametre değişkeninin değerini KodHeader değişkeninin değerine ekle anlamına gelmektedir. KodParametre değişkeni bir önceki adımlarda tanımlanmıştır. KodHeader değişkeni ise aşağıdaki gibi tanımlanmaktadır.



  • Değişken tanımı yapıldıktan sonra gerekli işlemler için değişkenler poliçe içerisinde seçilir.



  • TCMB servisinden dönen XML yanıtı dediğimiz gibi bütün kurları içeriyordu. Parametre olarak gönderilen bu kur bilgisi 4.bölgedeki Script poliçesi kullanılarak Javascript kodu yardımı ile dönüştülerek son olarak kullanıcıya sunulur.



var code=headerMap.get('KodHeader');

code=code.toUpperCase();

var firstIndex = bodyText.indexOf("Kod=\"" + code + "\"") - 25;

var xmlSubStr = bodyText.substring(firstIndex);

var lastIndex = xmlSubStr.indexOf("</Currency>") + 11;

xmlSubStr = xmlSubStr.substring(0, lastIndex);

if (xmlSubStr.startsWith("Currency")) {
   xmlSubStr = "<" + xmlSubStr;
}

bodyText=xmlSubStr;


  • Geçit üzerine poliçeler eklendikten sonra oluşan görüntü bu şekildedir.




  • Dönüşüm yapıldıktan sonra dönülen yanıt ise aşağıdadır.



Bu örnekte uyguladığımız yöntem en iyi yöntem değildir. Sunulan probleme karşı üretilen o anlık problemi çözebilecek bir yöntemdir.