API veya Uygulama Programlama Arayüzü, farklı uygulamalar arasında etkileşime ve iletişime izin veren işlevler ve kurallar sunar. Bu arayüzler, uygulama entegrasyonunu kolaylaştırarak geliştiricilerin güçlü dijital ürünler oluşturmasını sağlar.
API, istekler ve yanıtlar aracılığıyla uygulamalar arasında aracılık yapar. Örneğin, kullanıcının mevcut Twitter hesabı aracılığıyla uygulamaya kaydolması, geliştiricilerin uygulamaya entegre ettiği Twitter API'si aracılığıyla gerçekleşir. API, istek ve yanıt göndermek için çeşitli protokoller ve mimariler kullanır:
- XML-RPC — ağlar arasında fonksiyon alışverişi sağlar. XML-RPC, istemciden sunucuya bilgi aktarımı için yanıtları/istekleri ve HTTP protokollerini tanımlamak için XML kullanır.
- JSON-RPC, XML'e benzer hafif bir RPC'dir. Burada protokol JSON'da kodlanmıştır; asenkron yanıtlarla sunucuya çağrı almayı sağlar.
- SOAP — bilgisayar ağlarında web hizmetlerini uygularken yapılandırılmış bilgi alışverişi için basit bir nesne erişim protokolü. SOAP, işletim sistemlerinde kimlik doğrulama, yetkilendirme ve süreç iletişimi için XML kullanır. Müşterilerin, platform ve dilden bağımsız olarak web hizmetlerini aramasına ve yanıt almasına olanak tanır.
- REST API (temsili durum aktarımı) — istemci-sunucu uygulamalarını bağımsız olarak kullanan bir mimari stil. REST, iletişim için HTTP protokolünü kullanır.
Bu yazıda, REST API'ye odaklanıyoruz, onu tanımlıyoruz ve diğer API'lerden nasıl farklı olduğunu analiz ediyoruz.
REST API'yi Tanımlama
REST, HTTP protokolü aracılığıyla API'leri tasarlamaya yönelik bir mimari stildir. En önemli avantajı, büyük esnekliğidir.
Geliştiriciler, bir web uygulamasının veya sitenin kullanıcısına doğrudan sunucudan veri sağlamaya ihtiyaç duyulan her yerde REST API'yi kullanır. REST API'nin ana bileşenleri:
- Müşteri — kullanıcı tarafında (cihazında) başlatılan ve iletişimi başlatan bir istemci veya program.
- sunucu — işlevlerine ve verilerine erişim olarak API'leri kullanan bir sunucu.
- Kaynak - sunucunun istemciye ilettiği herhangi bir içerik (video, metin, resim).
REST API nasıl çalışır?
REST API, HTTP istekleri aracılığıyla iletişim kurar ve aşağıdaki işlevleri tamamlar: veri oluşturma, okuma, güncelleme ve silme. CRUD işlemleri olarak da bilinirler. REST, istenen kaynaklar hakkında bilgi sağlar ve bir kaynakla ne yapılacağını açıklamak için dört yöntem kullanır:
POST — bir kaynak yaratmak;
GET — kaynak almak;
PUT - bir kaynağı güncellemek;
DELETE — bir kaynağı silme.
Kaynak
Kaynak, bir bilgi soyutlaması olan REST API'de kritik bir kavramdır. Herhangi bir bilgi olabilir: belge, resim, geçici hizmet.
Kaynağın herhangi bir andaki durumu, verilerden, verileri açıklayan meta verilerden ve müşterilerin bir sonraki duruma geçmesine yardımcı olacak hiper ortam bağlantılarından oluşan kaynak temsili olarak bilinir.
Bilgi istemciye çeşitli biçimlerde teslim edilebilir: JSON, HTML, XLT, Python veya düz metin. En popüler ve kullanılanı JSON'dur çünkü insan ve makine tarafından okunabilir ve dilden bağımsızdır.
Bir kaynağa erişmek için müşterinin bir istekte bulunması gerekir. Bunu aldıktan sonra, sunucu bir kaynak hakkında kodlanmış verilerle bir yanıt üretecektir.
İstek yapısı dört ana bileşen içerir: HTTP yöntemi (daha önce bahsettiğimiz CRUD), uç noktalar, başlıklar ve gövde.
HTTP yöntemi , kaynakla ne yapılması gerektiğini açıklar. Hemen yukarıda, mevcut dört yöntemden bahsettik: POST, GET, PUT, DELETE.
Uç nokta , kaynağın nasıl ve nerede bulunabileceğini gösteren bir URI — Tekdüzen Kaynak Tanımlayıcı içerir. Bir URL veya Tekdüzen Kaynak Konumu, tam bir web adresini temsil eden en yaygın URI türüdür.
Başlıklar , istemci ve sunucuyla ilgili verileri içerir. Başlıklar, kimlik doğrulama verilerini içerir: API anahtarı, ad, sunucunun kurulu olduğu bilgisayara ait IP adresi ve ayrıca yanıt biçimiyle ilgili bilgiler.
Gövde , eklemek istediğiniz veriler gibi sunucuya ek bilgiler göndermek için kullanılır.
REST API ilkeleri
REST, belirli bir teknoloji veya platforma bağlı değildir. Dilden bağımsızdır. Ayrıca API'nin nasıl oluşturulacağını tam olarak belirtmez. Ancak altı mimari kısıtlama kullanır. Arayüz, bu kısıtlamalar izlenerek geçerli bir REST API olarak adlandırılabilir. Sunucunun istekleri nasıl işlediğini ve bunlara nasıl yanıt verdiğini açıklarlar.
Müşteri sunucusu
REST API, bir istemci-sunucu mimarisi stili uygular. İstemci kaynaklar için istek gönderiyor ve veri depolama ile ilişkili değil. Veri depolama sunucunun içinde kalır. Sunucular, kullanıcı arayüzü ile iletişime dahil değildir. İstemci ve sunucu birbirine bağlı olarak gelişir. Bu faktör, REST'i daha da esnek ve ölçeklenebilir hale getirir.
tek tip arayüz
Birleşik arayüz, REST API'yi ayırt eden önemli bir faktördür. Sunucuyla iletişim kurmanın tek bir yolu olduğunu belirtir, uygulama ve cihaz türünü ima etmez.
Tek tip arayüzün dört prensibi vardır:
- Kaynakların belirlenmesi. Her kaynağın, kaynak durumundan bağımsız bir kimliği olmalıdır. URL bir tanımlayıcı görevi görür.
- Temsil yoluyla kaynakların manipülasyonu. Bir kaynak temsili (istemcinin sahip olduğu), kaynağı silmek veya değiştirmek için gereken verileri içerir. İstemci, sunucunun (bir JSON nesnesi) değiştirmesi, kaldırması veya eklemesi gerektiğine dair bir temsil gönderir.
- Kendinden açıklayıcı mesajlar. Bu tür mesajlar, alıcının anlaması için tüm bilgileri içerir. Ayrı belgelerde veya mesajlarda ek bilgi gerekmez. Her mesaj, sunucunun isteği ayrıştırması için yeterli bilgiye sahiptir.
- Uygulama durumunun motoru olarak hiper ortam. Hypermedia, istemcinin diğer kaynakları bulabilmesi için her yanıt için bağlantı kullanımını gerektirir. REST'te, tüm etkileşimler için hiper ortam kullanılır.
Vatansız
Bu, sunucunun istemci hakkında herhangi bir veri içermediği anlamına gelir. Talep işleme için gereken tüm bilgiler talebe dahildir. İstemci tüm oturum bilgilerini saklar.
önbelleğe alınabilir
Her yanıt, önbelleğe alınabilir olup olmadığını ve yanıtın önbelleğe alınabileceği süreyi bildiren bilgilere sahip olmalıdır. Önbelleğe alınabilirse, benzer isteklerde istemci, sunucuya tekrar tekrar istek göndermeden aynı verileri kullanabilir. Performansı ve kullanılabilirliği artırmaya yardımcı olur.
Katmanlı sistem
REST, bileşenlerin davranışı üzerinde belirli kısıtlamalar oluşturan katmanlar hiyerarşisini uygular. Katmanlı bir sistemde, bileşenler yalnızca en yakın seviyelerde bulunan bileşenleri ve etkileşimde bulundukları bileşenleri görebilir.
Talep üzerine kod
İstemcilerin kod indirmesine ve yürütmesine izin veren isteğe bağlı bir özelliktir.
REST API'yi farklı kılan nedir?
REST API'nin altı ilkesi, bu arabirim ile diğer türler arasındaki temel farklar olarak kabul edilebilir. Ek olarak, REST'i ayırt eden birkaç parametre vardır.
İlk olarak, REST'in özü, diğer türlerle uyumsuzluğunu belirler. Bir mimarinin, RESTful bir web hizmeti sağlamak için uymanız gereken bir dizi gereksinimi temsil ettiği bir mimari stildir. Örneğin, SOAP ve RPC, mesajları tanımlayan mesajlaşma protokolleridir. Yalnızca gereksinimleri (kısıtlamaları) belirten mimari tarzın aksine, mesajın yerine getirmesi gerekir.
Yapı
Genellikle API, uygulamadan uygulamaya biçimini takip ederken, REST farklı bir yapıyı izler - İstemci-Sunucu. İstemci ve sunucu bağımsız olarak gelişiyor ve işte daha fazla esneklik sağlıyor.
Mesaj değişim formatı
API'ler genellikle belirli mesaj biçimlerini kullanır; örneğin, SOAP XML kullanır. REST bu kadar katı bir ilkeye uymaz. Veri alışverişi için hemen hemen her formatı kullanabilir. Ancak, JSON şu anda en popüler olanıdır.
JSON'un popülaritesinin arkasında bariz nedenler var - insan tarafından okunabilir ve veri alışverişi biçimini analiz etmesi kolay. JSON dilden bağımsızdır ve JavaScript dışında herhangi bir dilde kullanabilirsiniz.
Esneklik
REST, esnek bir mimari stildir, bu nedenle geliştiriciler bunu yaygın olarak kullanır. Daha fazla bant genişliği gerektiren gelişmiş güvenlik özelliklerine sahip daha karmaşık bir protokol olan SOAP ile karşılaştırıldığında, REST, geliştiricilerin bu gereksinimleri kendi formatlarında kullanmalarına izin veren basit yönergelerden oluşur. Mimari yüksek performans sağlar ve özellikle indirme hızının önemli olduğu mobil cihazlar için talep edilmesini sağlar.
Gördüğümüz gibi, REST'in bilinen diğer API'lere göre belirli avantajları vardır. Bu nedenle Twitter ve Google gibi önde gelen tüm şirketler ürünlerine uygulamıştır. Sonuçta, dünya çapındaki geliştiricilere veri aktarmanın ideal ve kolay yolu ve yazılım geliştirme için verimli ve ölçeklenebilir arayüzler oluşturmak için kanıtlanmış bir mekanizmadır.