Apinizer ile Veri Tabanından API Oluşturma

Neslihan Esra Altınışık
Apinizer
Published in
5 min readAug 19, 2021

Apinizer Platform’unun API Creator modülü ile low-code metoduyla Mock API, Script-to-API ve DB-to-API üretilebilmektedir. Bu yazıda, DB-to-API nedir, nasıl uygulanır, çözdüğü problemler ve kolaylıklar nelerdir anlatmaya çalıştım.

Verilerini diğer servisler, web uygulamalar, mobil geliştirmeler için erişime açtığımız birçok API, aslında veri tabanları ile konuşmaktadır. Apinizer’ın DB-to-API özelliği ile veri tabanı tipine ait SQL deyimleri ile eşleşen endpoint’ler tasarlayarak, anında REST API üretilir.

Low-Code Yaklaşımıyla DB-to-API Oluşturmanın Avantajları

Low-code, genel olarak, çok az kod yazarak, derin teknik bilgi gerektirmeden, fikrin uygulamaya dönüştürülmesini sağlayan yaklaşımdır. DB-to-API, low-code metoduyla veri tabanından API üretmeyi sağlar. Bu durumun avantajlarından bahsedecek olursak;

  • API’yi, API consumer’ların erişimine açılmasında zaman ve kodlama bilgisi ihtiyacını azaltır.
  • API geliştirme süreci, güçlü görsel arayüz üzerinden yönetilir. Kolaylıkla endpoint’ler özelleştirilebilir, bakım/güncelleme yapılabilir. Dolayısıyla hızı artırır ve müşterilere daha iyi hizmet sunmayı sağlar.
  • SQL deyimi yazan herkes API üzerinde geliştirme yapabilir. Bu yüzden insan maliyetini düşürür. Teknik olmayan API paydaşlarının da katkı yapmaları sağlanabilir. (pahalı danışmanlara gerek yok !?!)
  • Enterprise uygulamaların agility(çeviklik) yeteneğini destekler.

Code-First vs API Design-First

İşi ilgili veri tabanındaki sorguyu çalışma üzerine kurulu bir API’nin, geliştirilme senaryosunu, manuel olarak kodla geliştirilme (code-first) ve DB-to-API (API design-first) aracı ile üretme kıyaslamasına bakalım;

İlk olarak uygulama oluşturarak API oluşturma yani code-first yaklaşımıyla yapacaklarımıza adım adım bakalım;

  • Sürecin planlanması (stack kullanımı, API endpointleri vs.),
  • Uygulamanın oluşturulup API’nin modelleri, repository, service, resource vs. class’ları kodlanması,
  • kodların hataya açık olması ve dolayısıyla oluşan hataların çözümlenmesi,
  • API’nin deploy edilmesi için docker konfigürasyonu oluşturulup k8s kurulumu yapılması (ya da bir sunucu da çalıştırılması),
  • uygulamanın ve API’nin test edilmesi.

Bu adımlara ek olarak, API’ye bakım veya geliştirme sürecinde, müşteri ya da API’yi kullanan ekip tarafından verilen geri bildirim ya da yeni bir özelliği ekleme talebi gelirse yukarıdaki adımlar tekrar gerçekleştirilecektir.

Eğer bu API’nin güvenliğinin sağlanması, izlenmesi vs. istenirse third-party bağımlılıklar eklenerek geliştirme çalışmaları devam edecektir.

Ve en önemlisi bu işlemleri yapacak teknik bilgiye sahip biri(leri) olmalıdır.

Böyle bir senaryoda, SQL sorgularını çalıştırıp sonucunu dönen bir API’nin geliştirilip canlıya alınma süresi günler haftalar alabilir. Bu süreyi, API sayısının arttığı ve birden fazla ekibin API geliştirdiği bir senaryo için düşünün! 😱 Tarih tipine ait format değişikliği gibi ufak bir işlemin uygulanması için bile, geliştiricinin bunu yapması ve test etmesi onun yarım gününü alabilir. API tanım belgesinin (API Spec) üretilmesi, hızlı kod geliştirmeye odaklanılmasından ya da tecrübe azlığından atlanabilmektedir. (Dolayısıyla API dokümantasyonu yoksa bu insanlar nasıl call yapacak 🙃). Bu tarzda sorunlarla sıklıkla karşılaşılması, sistemi spagetti forma sokabilir ya da workaround çözüm bulmaya zorlayabilir.

Ek olarak, bu yaklaşımın daha geleneksel bir çözüm olduğu görülmektedir. Agile olmanın önemli bir kriter olduğu günümüzde, API’nin hızlı bir şekilde paydaşların (stakeholders) kullanımına açılması (time-to-market) ya da consume edilmesi ve iş akışının yönetilebilir olması dikkate alınmalıdır.

Bu senaryoya, API design-first yaklaşımıyla Apinizer üzerinde uygulanmasına bakalım (Bu işlemler kullanıcı dostu arayüzler üzerinden gerçekleşip, yazının devamında detaylı olarak anlatılacaktır.);

  • Veri tabanı bağlantısı entegrasyonu oluşturulur.
  • Veri tabanı sorguları ile endpoint’ler tasarlanır. HTTP istekleri anında test edilebilir. Otomatik olarak API tanım belgeleri farklı tipte ve formatta oluşturulur.
  • API’den, API Proxy oluşturularak deploy edilir.

Bu senaryoda, API’nin geliştirilip canlıya alınması çok daha kısa sürer. Uygulama değil de arayüz üzerinden işlem yapmak hata riskini azaltacaktır. API’nin endpoint’lerini güncelleme gibi işlemler saniyeler içinde uygulanıp, test edilip, deploy edilebilir.

O zaman konunun pratiğini yapmaya başlayalım! Uygulama sürecinde MySQL tipindeki ‘employees’ veri tabanı üzerinde ‘employees’ tablosu baz alınarak API oluşturulacaktır.

MySQL’den veri tabanı bağlantı tanımı oluşturma

Apinizer, JDBC üzerinden veri tabanıyla etkileşime geçer. Desteklediği ilişkisel veri tabanları; Oracle Database, Microsoft SQL Server, PostgreSQL, MySQL, IBM DB2, SAP SYBASE, Apache Hive, Apache Impala.

Apinizer, desteklediği veri tabanları için birden fazla bağlantı oluşturulmasına izin verir ve bunlar için connection pooling yapar.

Employees veri tabanına ait bağlantıyı test edip oluşturuyoruz. Bu işlem, endpoint oluştururken sorgunun hangi veri tabanında çalışacağını belirlemek için yapılır.

Veri tabanı bağlantı tanımını ihtiyaçlarınıza göre genişletebilirsiniz.

Veri tabanından API oluşturma

Bu aşamada, endpoint bilgilerini girip, bu endpoint’e istek yapıldığında veri tabanında çalıştırılacak sorguyu, sorgudaki parametrelerin isteğin hangi bölgesinden alacağımıza karar veriyoruz. Hem de sorgudan dönen değeri test ediyoruz. Bu bölümde, SQL deyiminin tipine göre API tasarımına (hangi HTTP metodu kullanılacak? URL tasarımı nasıl olmalı?) dikkat edilmelidir.

‘Employees DB-to-API’ adlı API’nin ‘/employee/findByFirstNameAndLastName’ adlı enpointin oluşturulup, test edilmesi
Employees DB-to-API’nin tüm endpoint’leri listesi

DB-to-API’nin Tanım Belgelerini (API Specification) Görüntüleme

API oluşturulduğunda, Swagger ve Open API türündeki API tanım belge çeşitlerini on-the-fly olarak JSON ve YAML formatında erişilebilir.

DB-to-API’den API Proxy Oluşturma

DB-to-API’den bir kaç tıkla API Proxy oluşturma ve endpoint’i test etme

Apinizer’ın sağladığı diğer bir kolaylık ise saniyeler içerisinde API Proxy oluşturulup diğer paydaşların erişimine açılabilmesidir.

API Proxy’nin sağladığı kolaylıklar ise az kod ile;

  • güvenlik (Simple, Base64, Digest, JWT, JWT 3.Party, OAuth2, Backend API, Şifreleme, Şifre Açma yetkilendirme vs. kimlik doğrulama politikaları), erişim politikaları (izin verilen/yasaklı API listesi, API bazlı kota/daraltma), tehdit koruması (içerik filtreleri, max/min mesaj uzunluğu, XML/JSON şema doğrulama) politikaları ile API’nin güvenliğini sağlama,
  • iş kuralı, script politikaları ile mesajın bölgelerinde manipülasyon ya da iş mantıkları oluşturarak API’yi geliştirme,
  • log kayıtları üzerinden API Trafiğini izleme, analiz etme ve raporlama, ayrıntılı log kayıtlarını etkinleştirerek logları debug etme,
  • başka bir araca ihtiyaç duymadan API’yi test etme,
  • API versiyonlarını yönetme,
  • farklı ortamlarda(production, sandbox, test) dağıtık olarak çalışma,
  • anormal durumların tespiti, API sağlığını monitör etme vs.

➳ Apinizer hakkında daha detaylı bilgi almak için tıklayınız.

➳ Apinizer ile DB-to-API oluşturmak ve API Proxy olarak kullanıma açmayı denemek için tıklayınız.

--

--