API nedir, bir işletme için ne anlama gelir?
API'yi teknik tarif yerine günlük işle anlatıyoruz: iki program neden konuşamıyor, bağlantı kurulunca ne değişiyor, teklif alırken hangi soruları sormak gerekiyor.
Yazan: OSBSA Bilişim
API, iki ayrı programın birbirinden veri isteyip veri gönderebilmesi için açılmış resmi bir kapıdır. Bir insanın ekrana bakıp elle giriş yapması yerine, programlar doğrudan konuşur.
Bunu neden bilmeniz gerekiyor? Çünkü "ERP'mizle siteyi bağlayalım" dediğiniz anda alacağınız ilk cevap "ERP'nizin API'si var mı" olacak ve bu sorunun cevabı projenin mümkün olup olmadığını belirliyor.
API'yi neye benzetirsek doğru anlarız?
Lokanta benzetmesi bu iş için fazla kullanılmış ama işe yarıyor, o yüzden kısa tutarak kullanalım. Mutfağa kendiniz girip yemek almazsınız. Garsona söylersiniz, garson mutfağın kurallarını bilir, sipariş alır ve size tabağı getirir.
API o garson. Muhasebe programınızın veritabanına kimse doğrudan dalmaz, çünkü orada yapılacak yanlış bir işlem bütün kayıtları bozabilir. Bunun yerine program şunu der: "Bana sorularını şu biçimde sor, sana cevabı şu biçimde vereyim."
Burada iki şey önemli. Birincisi, kapı bir kişi tarafından açılmalıdır. Programın üreticisi API'yi yazmadıysa siz açamazsınız. İkincisi, kapının bir anahtarı olur. Genelde buna API anahtarı denir ve şifre gibi korunması gerekir.
Entegrasyon ne demek, API ile farkı ne?
Entegrasyon, iki sistemi birlikte çalıştırma işinin kendisidir. API ise bu işi yaparken kullanılan yoldur. "Kargo entegrasyonu yaptık" demek, "kargo firmasının API'sini kullanarak gönderi kaydını otomatik açtık" demenin kısa halidir.
Entegrasyonda genelde üç yön vardır:
| Yön | Ne oluyor | Tipik örnek |
|---|---|---|
| Dışarıdan içeri | Siz başka sistemden veri çekiyorsunuz | ERP'deki stok miktarını siteye yazmak |
| İçeriden dışarı | Siz başka sisteme veri gönderiyorsunuz | Siteden gelen siparişi muhasebeye düşmek |
| Çift yönlü | İkisi birden, genelde sıraya bağlı | Sipariş gider, fatura numarası geri gelir |
Çift yönlü olan en pahalısıdır çünkü hangi sistemin son sözü söyleyeceğine karar vermeniz gerekir. Fiyatı hem sitede hem ERP'de değiştirebiliyorsanız, ikisi çakıştığında hangisi kazanacak? Bu soruya "duruma göre" diye cevap veriliyorsa entegrasyon daha yazılmadan sorunludur.
Webhook nedir, neden önemli?
Webhook, bir olay olduğunda karşı sistemin size haber vermesidir. Siz sormadan gelen bildirim diyebilirsiniz.
Fark şurada: normal API kullanımında siz dakikada bir "yeni sipariş var mı" diye sorarsınız. Webhook varsa sormazsınız, sipariş oluştuğu anda karşı taraf sizin adresinize bir mesaj bırakır. Sonuç hem daha hızlıdır hem de sunucuyu boşuna yormaz.
Sanal POS ödemelerinde bu konu can alıcı. Ödeme başarılı olduğunda bankanın size gönderdiği bildirim webhook'tur ve siparişi "ödendi" yapmak için bu bildirime güvenirsiniz. Müşterinin tarayıcısının geri dönmesine güvenirseniz, internet kesildiği anda ödenmiş bir sipariş kayıtsız kalır.
Bizim programımızın API'si var mı, nasıl anlarım?
Üreticiye sorun. Sormanız gereken cümle şu: "Ürününüzün belgelenmiş bir API'si var mı, belgelerini paylaşabilir misiniz?"
Alacağınız cevaplar genelde üç grupta toplanır.
Var ve belgeli. En iyisi. Geliştirici belgeleri okur, ne yapılabileceğini görür ve gerçekçi bir süre verir.
Var ama ek ücretli veya sürüm bağımlı. Yaygın durum. Bazı yerli muhasebe paketlerinde veri erişimi ayrı bir modül olarak satılır. Bunu projenin başında öğrenmek, ortasında öğrenmekten iyidir.
Yok. O zaman iki seçenek kalır. Ya dosya alışverişi yaparsınız (program belirli aralıklarla bir dosya üretir, siz onu okursunuz) ya da doğrudan veritabanına bakarsınız. İkincisi riskli ve çoğu üretici desteğini keser. Dosya yöntemi ilkel görünür ama çalışır, sadece anlık olmaz.
API entegrasyonu ne kazandırır?
Somut konuşalım. Bir ambalaj üreticisi, siteden gelen siparişi elle muhasebeye giriyorsa şunlar oluyor: giriş gecikiyor, ara sıra ürün kodu yanlış yazılıyor, aynı sipariş iki kez giriliyor, kimse hangi siparişin faturalandığını tek ekranda göremiyor.
Bağlantı kurulduğunda bunların hepsi tek bir kurala iner: sipariş oluştuğunda kayıt otomatik açılır. Kazanç zamandan değil, hatadan gelir. Elle giriş yapan kişi günde elli kaydın birinde hata yapıyorsa, bu yılda yüzlerce düzeltme demek.
Bir de görünmeyen kazanç var: veriye güvenmeye başlarsınız. Rapor aldığınızda "bu rakam doğru mu acaba" diye tereddüt etmezsiniz.
Entegrasyon teklifinde nelere bakmalıyım?
Teklifte şunlar yazmıyorsa eksiktir:
- Hangi veri, hangi yöne, ne sıklıkta akacak
- Hata olduğunda ne yapılacak. Karşı sistem cevap vermezse kayıt kaybolur mu, sıraya mı alınır, kime haber verilir
- Kayıt tutuluyor mu. Hangi isteğin gittiği ve ne cevap geldiği bir yere yazılmazsa sorun çıktığında kimse sebebini bulamaz
- Test ortamı var mı. Entegrasyon canlı veriyle denenmez, deneme siparişi gerçek faturaya dönüşür
- Anahtarlar nerede duruyor. API anahtarı kod içine yazılmamalı, sunucu ayarında tutulmalı
Son madde sıkıcı görünüyor ama hayati. Anahtarı kod deposuna yazan bir ekip, o depoya erişimi olan herkese muhasebe verinizin kapısını vermiş olur.
Hız sınırı diye bir şey duydum, o ne?
Çoğu API dakikada kaç istek gönderebileceğinizi sınırlar. Buna hız sınırı denir. On bin ürünü tek seferde güncellemeye kalkarsanız karşı sistem kapıyı kapatır.
İyi yazılmış bir entegrasyon bunu hesaba katar: istekleri parçalar, sıraya koyar, reddedilen isteği biraz bekleyip tekrar dener. Teklifte "toplu aktarım nasıl yapılacak" diye sorun. Cevap "hepsini gönderiyoruz" ise sorun ilk büyük güncellemede çıkacak.
Bir de bizim API'miz olsun mu?
Bazen soru tersinden geliyor: bizim sistemimiz dışarıya veri versin mi?
Şu durumlarda mantıklı. Bayileriniz kendi sistemlerine stok bilgisi çekmek istiyorsa, bir pazaryerine ürün göndermeniz gerekiyorsa, ya da saha ekibiniz için ayrı bir mobil uygulama yazdıracaksanız kendi kapınızı açmak gerekir.
Açarken üç şeyi baştan planlayın. Kim erişebilecek, yani anahtar dağıtımı nasıl yönetilecek. Ne kadar veri verilecek, maliyet fiyatı gibi alanlar dışarı çıkmamalı. Ve sürüm yönetimi: ileride alan adı değiştirdiğinizde karşı taraftaki sistemlerin çalışmaya devam etmesi için eski sürümü bir süre ayakta tutmanız gerekiyor.
Kısaca ne yapmalı?
Bir entegrasyon düşünüyorsanız sıralama şu: önce hangi verinin nereden nereye gideceğini bir kâğıda yazın, sonra her iki tarafın API'si olup olmadığını öğrenin, sonra teklif isteyin. Bu sırayı bozup önce teklif isterseniz gelen rakamlar birbiriyle karşılaştırılamaz.
Sizde durum ne, hangi programlar var, neyi neye bağlamak istiyorsunuz? Bunu konuşmak için web yazılım sayfamıza bakabilir ya da bize ulaşabilirsiniz. ERP tarafının ayrıntısını ERP entegrasyonu yazısında ayrıca anlattık.
- api
- entegrasyon
- webhook
- veri aktarımı