API (Application Programming Interface, Uygulama Programlama Arayüzü), iki yazılımın birbiriyle belirli kurallar çerçevesinde konuşmasını sağlayan bir sözleşmedir. Hava durumu uygulamanızın güncel sıcaklığı nereden aldığını, bir e-ticaret sitesinin ödeme sayfasının bankayla nasıl konuştuğunu veya bir harita eklentisinin konum bilgisini nasıl çektiğini düşünün: hepsinde API vardır. Web geliştirmede en yaygın API biçimi HTTP üzerinden çalışan REST API'lerdir.

Restoran benzetmesi

API'yi restoranın garsonu gibi düşünün: siz (istemci) mutfağa (sunucu) doğrudan girmezsiniz; menüdeki seçenekleri garsona söylersiniz, garson siparişi mutfağa iletir ve yemeği getirir. Menü, API'nin sunduğu işlemlerin listesi; garson ise isteği ileten arayüzdür.

REST nedir?

REST (Representational State Transfer), web servislerinin tasarımı için bir mimari yaklaşımdır. Temel fikirler:

Sponsorlu Bağlantı

HTTP yöntemleri

YöntemAmaçÖrnek
GETVeri okuma (güvenli, veriyi değiştirmez)GET /kullanicilar/42
POSTYeni kaynak oluşturma veya işlem başlatmaPOST /siparisler
PUTBir kaynağı tamamen değiştirme/oluşturmaPUT /kullanicilar/42
PATCHKaynağı kısmen güncellemePATCH /kullanicilar/42
DELETEKaynağı silmeDELETE /kullanicilar/42

GET, PUT ve DELETE "idempotent" (tekrarlanabilir) olacak şekilde tasarlanır: aynı isteği birden fazla kez göndermek sonucu değiştirmez. POST genellikle idempotent değildir; aynı sipariş isteğini iki kez göndermek iki sipariş yaratabilir.

JSON nedir?

JSON (JavaScript Object Notation), insan tarafından okunabilir hafif bir veri biçimidir. Nesneler süslü parantez, listeler köşeli parantez içinde yazılır:

{
  "id": 42,
  "ad": "Ayşe",
  "aktif": true,
  "etiketler": ["blog", "seo"],
  "adres": { "sehir": "İstanbul", "ilce": "Kadıköy" }
}

Dil bağımsızdır; PHP, JavaScript, Python ve birçok dilde kolayca ayrıştırılır (PHP'de json_encode / json_decode).

İstek ve yanıt örneği

curl -X POST https://api.ornek.com/v1/siparisler \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urun_id": 7, "adet": 2}'

HTTP/1.1 201 Created
{ "id": 1042, "durum": "beklemede" }

Yanıtın durum kodu sonucu bildirir: 200 başarılı, 201 oluşturuldu, 400 hatalı istek, 401 kimlik doğrulanmadı, 403 yetkisiz, 404 bulunamadı, 429 çok fazla istek, 500 sunucu hatası. Kodların anlamı için HTTP durum kodları yazımıza göz atın.

Kimlik doğrulama ve yetkilendirme

API anahtarı güvenliği

API tasarımı ve kullanımında iyi uygulamalar

Webhook nedir?

Normalde istemci, bir değişiklik olup olmadığını sormak için sürekli API'yi sorgular (polling). Webhook'ta ise ters yön çalışır: olay gerçekleştiğinde sağlayıcı, sizin belirttiğiniz bir adrese otomatik olarak istek gönderir (örneğin ödeme tamamlandığında ödeme servisinin sitenize bildirim göndermesi). Webhook'ları alırken isteğin gerçekten sağlayıcıdan geldiğini imza doğrulamasıyla kontrol edin.

CORS: tarayıcıdan API çağırırken sık karşılaşılan engel

Tarayıcılar, bir sayfanın başka bir alan adındaki API'ye isteğini varsayılan olarak kısıtlar (aynı kaynak politikası). API sunucusu, Access-Control-Allow-Origin gibi başlıklarla hangi kaynakların erişebileceğini belirtir. Bu bir güvenlik özelliğidir; her yere izin vermek (*) çerezli oturum kullanan API'lerde risk yaratabilir.

Kaynaklar ve ileri okuma

Sık Sorulan Sorular

REST ile SOAP veya GraphQL arasındaki fark nedir?

REST, HTTP yöntemleri ve URL'ler üzerine kurulu hafif bir yaklaşımdır. SOAP, XML tabanlı daha katı ve eski bir protokoldür; GraphQL ise istemcinin tek bir uç noktadan tam olarak istediği alanları sorgulamasına izin verir. Hepsinin farklı kullanım alanları vardır.

Ücretsiz API'ler güvenilir mi?

Kullanım koşullarını, hız sınırlarını, kesinti geçmişini ve gizlilik politikasını okuyun. Ücretsiz bir servise iş açısından kritik bağımlılık kurmak, hizmetin değişme veya kapanma riski taşır; bir yedek planınız olsun.

API anahtarım yanlışlıkla herkese açık bir yerde yayınlandı, ne yapmalıyım?

Anahtarı hemen iptal edip yenisini oluşturun, hizmetin kullanım günlüklerinde şüpheli etkinlik arayın ve yeni anahtarı güvenli biçimde (sunucu ortam değişkeni gibi) saklayın.