Yan yana
APIvsSDK
API ile SDK arasındaki fark nedir?
Güncellendi 2 dk okuma7 fark
Kısaca
API, bir servisin sunduğu istekler ya da fonksiyonlardır; SDK ise genellikle bu API üzerine kurulan ve onu bir dilde kullanmayı kolaylaştıran araç takımıdır.
API
Uygulama Programlama Arayüzü
API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
API sayfasını okuSDK
Yazılım Geliştirme Kiti
SDK (yazılım geliştirme kiti), belirli bir platform veya servis için geliştirme yapmaya yarayan araç, kütüphane, dokümantasyon ve örneklerden oluşan pakettir.
SDK sayfasını okuAPI ve SDK karşılaştırması
| Özellik | API | SDK |
|---|---|---|
| Ne olduğu | Bir arayüz: sunulan istekler ya da fonksiyonlar | Bir platform ya da servisle geliştirme yapmak için bir araç takımı |
| İçerdiği | Bir spesifikasyon ve arkasındaki servis ya da kütüphane | Kütüphaneler, dokümantasyon, örnekler ve çoğu zaman araçlar |
| Dil | Web API'lerinde dilden bağımsız: HTTP ve JSON gibi | Tek bir dil ya da platform için yapılır |
| Kullanım yolu | HTTP istekleri ya da fonksiyon çağrıları | SDK kütüphanesinin metotları |
| Sizin yerinize hallettiği | Sözleşmenin ötesinde hiçbir şey | Kimlik doğrulama, yeniden denemeler, sayfalama, tipler |
| Gerekli mi? | Evet, servise ulaşmanın yolu budur | Hayır, API'nin üzerinde bir kolaylıktır |
| Örnek | Bir ödeme servisinin endpoint'leri | O ödeme servisinin Python paketi |
Fark, açıklamalı
API (uygulama programlama arayüzü) bir sözleşmedir: bir web servisinin endpoint'leri ya da bir kütüphanenin fonksiyonları gibi, neyi isteyebileceğinizi ve karşılığında ne alacağınızı listeler. SDK (yazılım geliştirme kiti) ise bir platform üzerinde geliştirme yapmak için bir araç paketidir: istemci kütüphaneleri, dokümantasyon, kod örnekleri ve bazen komut satırı araçları ya da emülatörler.
Web servislerinde ikisi genellikle birlikte gelir. Bir ödeme şirketi bir HTTP API'si yayımlar, ardından onu saran JavaScript, Python ve Java SDK'ları: istekleri kendiniz oluşturup JSON'u ayrıştırmak yerine payments.create() çağırırsınız; kimlik doğrulamayı, yeniden denemeleri, sayfalamayı ve tipleri SDK ekler. SDK'nın yaptığı her şeyi API'yi doğrudan kullanarak da yapabilirsiniz; SDK size bu zahmeti kazandırır.
Platformlarda ise başlangıç noktası SDK'dır. Bir Android ya da iOS uygulaması yapmak, platformun derleyicileri, kütüphaneleri, emülatörleri ve dokümantasyonu içeren SDK'sını kurmak demektir; platformun API'leri, kodunuzun çağırdığı parçalarıdır.
Akılda tutmanın kısa bir yolu: API, sipariş verebileceğiniz şeylerin menüsüdür; SDK ise tek bir mutfak için bir mutfak aletleri ve tarifler setidir. Bir API'yi her zaman kullanırsınız, ya doğrudan ya da bir SDK üzerinden; SDK isteğe bağlıdır ve ancak altındaki API kadar iyidir.
Hangisini kullanmalısınız?
API şu durumlarda doğru seçim:
- Diliniz için bir SDK yok ya da resmî SDK güncel değil.
- Yalnızca bir iki çağrıya ihtiyacınız var ve yeni bir bağımlılık istemiyorsunuz.
- İstekler, zaman aşımları ve hataların nasıl ele alınacağı üzerinde tam kontrol istiyorsunuz.
SDK şu durumlarda doğru seçim:
- Diliniz için güncel tutulan resmî bir SDK var.
- Pek çok endpoint kullanıyorsunuz ve tipler, otomatik tamamlama ve daha az hata istiyorsunuz.
- Aksi hâlde kimlik doğrulamayı, yeniden denemeleri ya da sayfalamayı kendiniz yazmanız gerekecek.
Bir müşteri oluşturmak: API ile ve bir SDK ile
// Calling the HTTP API directly
const res = await fetch("https://api.example.com/v1/customers", {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email: "ada@example.com" }),
});
if (!res.ok) throw new Error(`API error ${res.status}`);
const customer = await res.json();// The same call through the service's SDK
import { Client } from "example-sdk";
const client = new Client({ apiKey: API_KEY }); // handles auth and retries
const customer = await client.customers.create({ email: "ada@example.com" });Sık sorulan sorular
Her API'nin bir SDK'sı var mı?
Hayır. Pek çok API, özellikle küçük ya da şirket içi olanlar, doğrudan HTTP üzerinden kullanılır. SDK'lar büyük, herkese açık servislerde yaygındır; bu servisler daha çok geliştiricinin hızla entegre olabilmesi için SDK yayımlar.
Bir kütüphane SDK mıdır?
İstemci kütüphanesi çoğu zaman bir SDK'nın ana parçasıdır, ama SDK genellikle etrafına dokümantasyon, örnekler ve araçlar da ekler. Kavramlar örtüşür ve pek çok şirket tek bir istemci kütüphanesine SDK der.
Bir SDK, API'deki sorunları gizleyebilir mi?
Yeniden denemelerle ya da daha anlaşılır hatalarla onları yumuşatabilir, ama API'nin izin verdiğini değiştiremez. API'de bir özellik eksikse SDK'da da eksiktir.