Bir uygulamada "Google ile giriş yap" butonuna bastığınızda, bir e-ticaret sitesinde kargonuzun nerede olduğunu gördüğünüzde ya da hava durumu uygulamasını açtığınızda arka planda hep aynı şey oluyor: bir yazılım başka bir yazılımla API üzerinden konuşuyor. Peki API nedir, nasıl çalışır ve neden bu kadar önemli? Bu yazıda konuyu teknik olmayanların da anlayacağı şekilde, örnekler ve tablolarla anlattık.
API Nedir?
API, Application Programming Interface yani uygulama programlama arayüzü demek. Kısaca, iki yazılımın birbiriyle nasıl konuşacağını tarif eden kurallar bütünü.
En sık kullanılan benzetme restoran örneği: Siz (müşteri) mutfağa girip yemeği kendiniz yapmıyorsunuz. Garsona menüden ne istediğinizi söylüyorsunuz, garson siparişi mutfağa iletiyor ve yemeği size getiriyor. Burada garson API'nin ta kendisi. Menü ise API'nin dokümantasyonu: neyi isteyebileceğinizi ve nasıl isteyeceğinizi gösteriyor. Mutfakta neler olup bittiğini bilmenize gerek yok.
Günlük Hayattan API Örnekleri
- Hava durumu uygulamaları: Verileri kendileri ölçmüyor, bir meteoroloji servisinin API'sinden çekiyor.
- Online ödeme: E-ticaret sitesi kart bilgilerinizi bir ödeme sağlayıcısının API'sine gönderiyor, "onaylandı" ya da "reddedildi" cevabını alıyor.
- Haritalar: Bir sitedeki "mağazamızın konumu" haritası, bir harita servisinin API'siyle gösteriliyor.
- "Google / Apple ile giriş yap": Kimlik doğrulama, ilgili servisin API'si üzerinden yapılıyor.
- Kargo takibi: Mağaza, kargo firmasının API'sine takip numarasını sorup güncel durumu size gösteriyor.
API Nasıl Çalışır?
Çoğu modern API, web'in kullandığı HTTP protokolü üzerinden çalışıyor. Mantık basit:
- İstemci (bir uygulama, web sitesi yada başka bir sunucu) belirli bir adrese bir istek gönderir.
- Sunucu isteği alır, yetkiyi kontrol eder, gerekli işlemi yapar (veritabanından okumak, kayıt oluşturmak vb.).
- Sunucu bir yanıt döner; genelde JSON formatında veri ve isteğin sonucunu belirten bir durum kodu.
Bir API İsteğinin Parçaları
| Parça | Ne işe yarar? | Örnek |
|---|---|---|
| Endpoint (URL) | İsteğin gideceği adres | https://api.example.com/v1/orders/1042 |
| HTTP metodu | Ne yapmak istediğinizi söyler | GET, POST, DELETE... |
| Header (başlık) | Kimlik doğrulama, veri formatı gibi ek bilgiler | Authorization: Bearer ... |
| Body (gövde) | Gönderilen veri (genelde JSON) | {"name": "Ayşe"} |
| Durum kodu | Yanıtta isteğin sonucunu belirtir | 200, 404, 500 |
HTTP Metotları
| Metot | Ne yapar? | Örnek |
|---|---|---|
GET | Veri okur | Bir siparişin detaylarını getirmek |
POST | Yeni kayıt oluşturur | Yeni sipariş vermek |
PUT | Kaydı tamamen günceller | Adres bilgisinin tamamını değiştirmek |
PATCH | Kaydın bir kısmını günceller | Sadece telefon numarasını değiştirmek |
DELETE | Kaydı siler | Siparişi iptal etmek |
Sık Görülen Durum Kodları
| Kod | Anlamı | Ne zaman görülür? |
|---|---|---|
| 200 OK | Başarılı | İstek sorunsuz işlendi |
| 201 Created | Oluşturuldu | Yeni kayıt başarıyla oluşturuldu |
| 400 Bad Request | Hatalı istek | Eksik veya yanlış formatta veri |
| 401 Unauthorized | Kimlik doğrulanmadı | API anahtarı yok ya da geçersiz |
| 403 Forbidden | Yetki yok | Kimlik doğru ama bu işlem için izin yok |
| 404 Not Found | Bulunamadı | Böyle bir kayıt veya adres yok |
| 429 Too Many Requests | Çok fazla istek | Kullanım sınırı (rate limit) aşıldı |
| 500 Internal Server Error | Sunucu hatası | Sorun sunucu tarafında |
Örnek Bir İstek ve Yanıt
Komut satırından curl ile bir siparişin detayını isteyelim:
curl -H "Authorization: Bearer API_ANAHTARINIZ" \
https://api.example.com/v1/orders/1042
Sunucunun döneceği yanıt şuna benzer bir JSON olur:
{
"id": 1042,
"status": "shipped",
"total": 349.90,
"currency": "TRY",
"items": [
{ "product": "Klavye", "quantity": 1 }
]
}
Uygulama bu veriyi alıp ekranda "Siparişiniz kargoya verildi" diye gösteriyor. Sizin gördüğünüz kısım bu kadar, arkadaki herşeyi API hallediyor.
API Türleri
| Tür | Veri formatı | Özelliği | Nerede kullanılır? |
|---|---|---|---|
| REST | Genelde JSON | Basit, yaygın, HTTP metotlarıyla çalışır | Web ve mobil uygulamaların çoğu |
| GraphQL | JSON | İstemci tam olarak hangi alanları istediğini söyler | Karmaşık arayüzler, mobil uygulamalar |
| SOAP | XML | Katı kurallar, eski ama hala yaygın | Bankacılık, kurumsal ve kamu sistemleri |
| gRPC | Protocol Buffers (ikili) | Çok hızlı, düşük veri boyutu | Mikroservisler arası iletişim |
| WebSocket | Serbest | Sürekli açık, iki yönlü bağlantı | Canlı sohbet, anlık bildirim, borsa verisi |
Kimin Kullanabildiğine Göre API'ler
| Tür | Kimler kullanır? | Örnek |
|---|---|---|
| Açık (public) API | Herkes, genelde bir API anahtarıyla | Hava durumu, harita servisleri |
| Partner API | Sadece anlaşmalı iş ortakları | Kargo veya ödeme entegrasyonları |
| İç (private) API | Sadece şirketin kendi sistemleri | Mobil uygulamanın kendi sunucusuyla konuşması |
API Güvenliği
API'ler verilere açılan kapılar olduğu için güvenlik çok önemli. Temel önlemler şunlar:
- API anahtarı: İsteği yapanın kim olduğunu belirleyen gizli bir anahtar. Kodun içine gömüp GitHub gibi yerlere yüklemeyin; ortam değişkeni ya da gizli anahtar yönetimi kullanın.
- OAuth 2.0 ve token'lar: Kullanıcı adına sınırlı ve süreli erişim vermek için kullanılan standart ("Google ile giriş" bunu kullanır).
- HTTPS: Tüm API trafiği şifreli olmalı; düz HTTP üzerinden anahtar göndermek kapıyı açık bırakmak demek.
- Rate limiting: Kötüye kullanımı ve aşırı yükü önlemek için belirli sürede yapılabilecek istek sayısını sınırlamak.
- En az yetki: Her anahtara sadece ihtiyacı olan izinleri verin, okuma yapacak bir entegrasyona silme yetkisi vermeyin.
API'ler ve Yapay Zeka
Bugün yapay zekayı ürünlere eklemenin en yaygın yolu da API. Büyük dil modeli sağlayıcıları modellerini API olarak sunuyor; siz metni gönderiyorsunuz, model cevabı dönüyor. Kendi sunucunuzda açık kaynak bir model çalıştırdığınızda da (ör. Ollama ile) model yine bir API üzerinden kullanılıyor. Bunun nasıl yapıldığını yapay zeka sanal sunucuda nasıl çalışır yazımızda anlattık. Mevcut sistemlerinize yapay zeka entegrasyonu için AI servisimize de göz atabilirsiniz.
Kendi API'nizi Nerede Çalıştırırsınız?
Kendi uygulamanız için bir API yazdığınızda onu 7/24 ayakta tutacak bir sunucuya ihtiyacınız var. Seçenekler kabaca şöyle:
- Sanal sunucu: Node.js, Python, PHP, Go... hangi dille yazdıysanız doğrudan çalıştırabilirsiniz. Küçük–orta API'ler için en pratik başlangıç. VECDC sanal sunucuları NVMe diskli, aylık $6'dan başlıyor ve yaklaşık 5 dakikada hazır.
- Docker ile: API'nizi container olarak paketleyip her ortamda aynı şekilde çalıştırırsınız. Docker kurulu gelen Developer VDS bunun için ideal.
- Kubernetes ile: Trafik büyüdükçe otomatik ölçeklenen, kesintisiz güncellenen bir yapı istiyorsanız Kubernetes Server ile başlayabilirsiniz.
Sık Sorulan Sorular
API ile web servis arasındaki fark nedir?
Web servis, ağ (genelde HTTP) üzerinden erişilen bir API türüdür. Yani her web servis bir API'dir ama her API bir web servis değildir; örneğin bir işletim sisteminin ya da yazılım kütüphanesinin sunduğu arayüzler de API'dir ama ağ üzerinden çalışmaz.
REST API nedir?
REST, HTTP metotlarını (GET, POST, PUT, DELETE) kullanan ve kaynaklara URL'ler üzerinden erişen bir API tasarım yaklaşımıdır. Veri genelde JSON formatında taşınır. Bugün web ve mobil uygulamalarda en yaygın kullanılan API türüdür.
API anahtarı nedir?
API anahtarı, API'ye istek gönderen uygulamayı tanımlayan gizli bir koddur. Sağlayıcı bu anahtarla kimin ne kadar istek yaptığını takip eder ve yetkisiz erişimi engeller. Anahtar şifre gibi saklanmalı, kodun içine gömülüp herkese açık yerlere yüklenmemelidir.
API kullanmak ücretli mi?
Duruma göre değişir. Birçok API belirli bir kullanım sınırına kadar ücretsizdir, sınır aşıldığında istek veya kullanım miktarına göre ücretlendirilir. Şirketlerin kendi iç API'leri ise sadece çalıştıkları sunucunun maliyetini doğurur.
Kısacası
API, yazılımların birbiriyle konuşmasını sağlayan bir arayüz. Bir istek gönderiyorsunuz, karşı taraf işi yapıp size bir yanıt dönüyor; mutfakta ne olduğunu bilmenize gerek yok. Bugün kullandığımız neredeyse her uygulama onlarca API'nin bir araya gelmesiyle çalışıyor. Kendi API'nizi yayına almak ya da sistemlerinizi birbirine bağlamak konusunda yardım isterseniz bize yazın, birlikte bakalım.