Yaygın olarak REST API olarak bilinen Representational State Transfer Application Programming Interfaces, öncelikle uygulamaları entegre etmek ve süreçleri otomatikleştirmek için kullanılır. Örneğin, Hizmet Olarak Masaüstü (DaaS) söz konusu olduğunda, bir REST API, bir müşteri satın alma işlemini tamamlar tamamlamaz sanal masaüstlerini dağıtma sürecini otomatikleştirmede etkili olabilir. Böylece DaaS sağlayıcısından insan etkileşimi ihtiyacını ortadan kaldırır.

Bu özellik, otomatik bir süreç aracılığıyla sanal uygulamalar ve masaüstleri sağlamak isteyen internet hizmet satıcıları (ISV’ler) ve hizmet sağlayıcılar (SP’ler) için oldukça avantajlı olabilir. DaaS sunan bir hizmet sağlayıcısı olduğunuzu varsayalım, ancak REST API destekli otomasyondan yararlanmıyorsunuz. Bir kullanıcı bir uygulama veya masaüstü talep etmek için bir bağlantıya tıkladığında, sistemi 7/24 izleyen birinin olması veya en azından satın alma işlemi tamamlanır tamamlanmaz ISV’ye haber verecek bir bildirim sisteminin olması gerekir. REST API, kullanıcının “satın al “a tıklamasından başlayarak hizmetin veya uygulamanın fiilen teslim edilmesine kadar gereken eylemleri otomatikleştirir.

API Nedir?

Application Programming Interface – Uygulama Programlama olarak bilinen API, farklı programların birbirleriyle iletişim kurmasını, veri aktarmasını ve entegre olmasını sağlayan web hizmetleri oluşturmak için bir dizi kural tanımlayan mimari bir stildir.

Genel olarak, bir API iki sistem arasında bir arayüz sağlar. İki sistemin birbiriyle etkileşime girmesini sağlayan bir dişli gibidir. Bu durumda, iki sistem API aracılığıyla programlı olarak etkileşime giren bilgisayarlardır.

REST API Nedir?

REST API, fazla işlem yapmadan web hizmetlerine kolayca erişmenin bir yoludur. Bir RESTful API çağrıldığında, sunucu, istenen kaynağın durumunun bir temsilini istemciye aktarır.

Örneğin, YouTube’da bisikletle ilgili videolar bulmaya çalışıyorsanız, YouTube arama alanına “bisiklet” yazıp enter tuşuna bastığınızda bisikletle ilgili videoların bir listesini görürsünüz. Kavramsal olarak, bir REST API tıpkı bunun gibi çalışır. Bir şey ararsınız ve talep ettiğiniz hizmetten bir sonuç listesi alırsınız.

API, bir uygulama programlama arayüzüdür. Programların birbirleriyle iletişim kurmasını sağlayan bir dizi kuraldır. Geliştirici API’yi sunucuda oluşturur ve istemcinin onunla konuşmasına izin verir.

REST, API’nin nasıl göründüğünü belirleyen şeydir. Geliştiricilerin bir API oluştururken izledikleri kurallardır. Bu kurallardan biri, belirli bir URL’ye bağlandığınızda bir veri parçası (bir kaynak) alabilmeniz gerektiğini belirtir.

Her URL’ye istek, size geri gönderilen veriye ise yanıt adı verilir.

RESTful API, bir işlemi küçük modüller serisine ayırır ve her modül işlemin altında yatan bir bölümü ele alır. Bu API, kaynakları elde etmek için komutlar ve mevcut HTTP metodolojilerini kullanır:

GET: Uzak bir sunucudan veri alır. Tek bir kaynak veya bir kaynak listesi olabilir.

PUT: Uzak sunucudaki verileri günceller.

POST: Uzak sunucuda yeni bir kaynak oluşturur.

DELETE: Uzak sunucudan verileri siler.

REST API aşağıdakileri yapar:

  • Hataları Ele Alma: Hataları ele alarak, meydana gelen hatanın türünü belirten HTTP yanıt kodlarını döndürerek uygun hata kodlarının türetilmesine / sonuçlandırılmasına yardımcı olur. Örn: 403 Forbidden → Kullanıcının istenen kaynağa erişmesine izin verilmediği anlamına gelir. 503 Service Unavailable → Aşırı yüklenme, sistem arızası veya bozuk veriler nedeniyle sunucu ucunda düzgün çalışmayan bir şey olduğu anlamına gelir.
  • Sıralama, Filtreleme ve Sayfalama Kolaylaşır: Çok sayıda veri yanıtı birikebilir, bu nedenle zamanında yanıt almak zahmetli olabilir, ancak REST API’nin arkasındaki daha büyük veri tabanı sayesinde filtreleme ve sayfalama yapılabilir, her ikisi de sunucu kaynaklarının kullanımını azaltarak performansı artırır.
  • Veri Önbelleğe Alma: Her bir sorguyu doğrudan veri tabanı üzerinden önbelleğe almak yerine yerel bellekten önbelleğe almayı ekleyebilirsiniz.
  • Durumsuz Etkileşimler: Uygulamanın performansı artar ve her istek bağımsız olarak ele alındığından sunucunun çökme riski kolayca ele alınabilir, dolayısıyla sunucu tarafı durum senkronizasyon mantığı ile uğraşmak zorunda kalmazsınız.

REST API’lerin Tarihçesi

REST API, ilk olarak 2000 yılında Dr. Roy Fielding tarafından doktora tezinde tanımlanmıştır. O tarihten önce web’de API’lerin tasarlanması ya da kullanılmasına yönelik standartlar bulunmuyordu, ancak kullanımda olan çok sayıda API (SOAP gibi) vardı.

Basit bir ifadeyle Fielding, iki sunucunun iletişim kurmasına ve veri alışverişi yapmasına olanak tanıyan REST tasarım ilkelerini tanımladı. Bu, sunucuların herhangi bir yerde olabileceği, ancak birbirleriyle HTTP aracılığıyla konuşabiliyorlarsa, REST’in çalışacağı anlamına gelmekteydi.

REST API’lerinin web üzerinde iş yapmak için vazgeçilmez hale gelmesi tezin yayınlanmasından sonra sadece birkaç yıl sürdü. Günümüzde daha yeni API tasarım modelleri mevcut olsa da REST, SaaS API’leri oluşturmak için varsayılan yöntem olmaya devam etmektedir.

REST API’nin İlkeleri

REST’in sağladığı işlevsellikten tam olarak faydalanmak için API’lerin altı gereksinime uyması gerekir (Teknik olarak beşi gerekli ve biri isteğe bağlıdır). Her bir gereklilik, hızlı ve çok yönlü bir API için zemin hazırlar.

1. İstemci-Sunucu Ayrımı

REST mimarisi altında, istemci ve sunucu yalnızca tek bir şekilde etkileşime girebilir: İstemci sunucuya bir istek gönderir, ardından sunucu istemciye bir yanıt gönderir. Sunucular istekte bulunamaz ve istemciler yanıt veremez, tüm etkileşimler istemci tarafından başlatılır.

İstemciler ve sunucular arasındaki iletişimi basitleştiren RESTful API’ler, bu ikisini uygun bir şekilde bağımsız tutar. Bu şekilde, istemci yazılımları diğer sunucuları etkileme endişesi olmadan yapılarını büyütebilir ve sunucu içerikleri istemcileri yanlışlıkla etkilemeden değiştirilebilir.

2. Tek Tip Arayüz

Tüm isteklerin ve tüm yanıtların ortak bir protokolü veya mesajlarını biçimlendirmenin bir yolunu izlemesi gerekir. Uygulamalar ve sunucular, bir aracı olmadan birlikte çalışma konusunda iyi bir iş çıkarmayan her türlü farklı dilde yazılmıştır. Tek tip bir arayüz, herhangi bir istemcinin herhangi bir REST API ile iletişim kurması için ortak bir dildir.

Standartlaştırılmış iletişim olmadan, yazılımlar arasında istekleri ve yanıtları çevirmek tam bir karmaşa olurdu. Küçük tutarsızlıklar bilgilerin karışmasına ve kaybolmasına neden olur ve API’ler kendi isteklerini güncellediğinde, uygulamalar da kendi istek süreçlerini güncellemek zorunda kalırdı. Tek tip bir arayüz bu olasılığı ortadan kaldırır.

Çoğu REST API’si için bu ortak dil HTTP ya da Hyper-Text Transfer Protocol’dür. HTTP özellikle REST için oluşturulmamıştır. REST, bu iletişim protokolünü, onu kullanan uygulamalar için standart olarak benimsemiştir.

3. Durumsuzluk

REST API ile yapılan tüm çağrılar durumsuz olmalıdır. Bu, her etkileşimin bağımsız olduğu ve her istek ve yanıtın etkileşimi tamamlamak için gereken tüm bilgileri sağladığı anlamına gelir. İstemci tarafından yapılan her istek sunucu tarafından yepyeni bir istek olarak yorumlanır, sunucu geçmiş istekler hakkında hiçbir şey hatırlamaz.

Sunucunun eski verileri almak için ek işlem yapması gerekmediğinden, durum bilgisi olmayan aktarımlar gereken sunucu belleği miktarını büyük ölçüde azaltır ve başarılı bir yanıt alma olasılığını artırır. Bu, bu etkileşimlerin ölçeklenebilir olmasını sağlar: Yazılım büyüdükçe ve daha fazla talepte bulundukça, geliştiricilerin önemli ölçüde daha fazla bellek kullanılması veya sunucunun taleplerle aşırı yüklenmesi konusunda endişelenmesine gerek yoktur.

4. Katmanlı Sistem

Şimdiye kadar API isteklerini bir istemci ve sunucu arasındaki basit bir etkileşim olarak tanımladık, ancak bu biraz basit bir ifadedir. Gerçekte, bu iki varlık arasında genellikle daha fazla sunucu vardır. Bu sunucular ya da katmanlar, güvenlik eklemek, trafiği yönetmek ve dağıtmak ya da bir dizi başka önemli işleve yardımcı olmak için vardır.

Bu ilke, istemci ve hedef sunucu arasındaki mesajların, aralarındaki katmanlardan bağımsız olarak her zaman aynı şekilde biçimlendirilmesini ve işlenmesini gerektirir. Ek katmanlar istemci-sunucu etkileşimlerini etkilememelidir.

Geliştiriciler bu kılavuzu izlediğinde, sunucu sistemleri yeniden düzenlenebilir, güncellenebilir veya temel istek-yanıt üzerinde hiçbir etkisi olmadan başka bir şekilde değiştirilebilir.

5. Önbelleklenebilir

Önbelleğe alma, bir web sitesini ziyaret eden bir istemcinin cihazında medya depolandığında gerçekleşir. Bir istemci o siteye geri döndüğünde, önbelleğe alınan veriler sunucudan tekrar getirilmek yerine yerel depolama alanından hızlı bir şekilde yüklenir. Önbelleğe alma, sayfa yükleme süresini azaltırken sunucu kaynaklarından ve bant genişliğinden tasarruf sağlar, bu nedenle çoğu büyük web sitesi bunu yapar.

REST API’leri veri önbellekleme düşünülerek oluşturulmuştur. Bir sunucu bir istemciye yanıt gönderdiğinde, yanıt, sağlanan kaynağın önbelleğe alınıp alınamayacağını ve ne kadar süreyle önbelleğe alınacağını belirtmelidir.

6. Talep Üzerine Kod (İsteğe Bağlı)

Son REST ilkesi isteğe bağlıdır. İstenirse bir API, yanıtında istemcilere bilgisayar kodu gönderebilir. Bu, istemciye kodu kendi arka ucunda çalıştırma yetkisi verir.

Bir API bu kurallar dizisine bağlı kaldığı sürece RESTful olarak kabul edilir. Ancak bu kurallar, geliştiricilerin API’lerinin işlevselliğini özelleştirmeleri için bolca alan bırakır. Bu esneklik REST API’lerini bir diğer yaygın web API yöntemi olan Basit Nesne Erişim Protokolü’nden (SOAP) ayırır.

REST API’leri Nasıl Çalışır?

REST API neredeyse herhangi bir web sitesi ile aynı şekilde çalışır. Çağrı istemciden sunucuya yapılır ve veriler HTTP protokolü aracılığıyla geri alınır. Bunları, istek başlıkları, istek gövdesi, yanıt gövdesi, durum kodları vb. kullanarak web tarayıcısı aracılığıyla istemci için gerekli olan sunucuda bulunan kaynaklara erişim araçları sağlamak için de kullanabilirsiniz.

HTTP Yöntemleri

HTTP yöntemleri, tek tip arayüz kısıtlamasının ana bölümünü oluşturur ve bunu, istenen kaynağı elde etmek için hangi eylemlerin izlenmesi gerektiğini belirleyen REST izler.

GET, POST, PUT ve DELETE yöntemleri Create, Read, Update, Delete gibi CRUD işlemlerini gerçekleştirebilir.

REST’lerin en büyük avantajlarından biri, söz konusu API ile daha fazlasını yapmanıza olanak tanıyan çok sayıda esneklik sağlamasıdır. 

REST API’leri aşağıdakiler için kullanışlıdır:

1. Bulut uygulamaları

REST API’ler bulut uygulamalarında kullanışlıdır, çünkü çağrılarında statik veri yoktur. Bir şey başarısız olursa, statik veri içermeyen bileşenler sorunsuz bir şekilde yeniden dağıtılabilir ve yük değişikliklerine göre ölçeklenebilir.

2. Bulut hizmetleri

REST API bulut hizmetlerinde de kullanılır çünkü API aracılığıyla hizmete bağlanmak için URL’nin kodunun nasıl çözüleceğini kontrol etmeniz gerekir. Ancak, bulut hizmetleri ve mikro hizmetler RESTful API’leri geleceğin kuralı haline getirecektir.

3. Web kullanımı 

REST istemci tarafı teknolojisine bağlı olmadığından, bu API’lere istemci tarafı web projesinden, IoT cihazından veya iOS uygulamasından erişebilirsiniz. Belirli bir istemci tarafı teknoloji yığınına bağlı kalma endişesi olmadan şirketiniz için altyapı oluşturabilirsiniz.

Neden REST API Kullanılmalı?

REST API’ler kullanılmasının bazı nedenleri aşağıdaki şekildedir:

1. Esneklik

REST API’ler birçok istek türünü işleyebilir. Ayrıca JSON, YAML, XML, ETC gibi birçok formatta veri paylaşabilir. Bu da daha fazla esneklik sağlar.

2. Ölçeklenebilirlik

Boyut veya kapasiteden bağımsız olarak yazılımın iki parçası arasında iletişim kurmak üzere tasarlandıklarından, uygulamanın bir parçasını diğerinden endişe duymadan ayrı ayrı ölçeklendirebilirsiniz.

3. Bağımsız

Veriler belirli bir kaynağa veya yönteme bağlı değildir. Böylece REST API’ler henüz geliştirme aşamasındayken birden fazla ortamda farklı alanları test edebilir.

4. Kolay entegrasyon

REST API’nin tek tip arayüz prensibi, talebin geldiği kaynaktan bağımsız olarak API’nin aynı şekilde çalışmasını sağlar. Böylece aynı API’yi başka bir uygulamaya kolayca entegre edebilirsiniz.

REST API Örnekleri

REST API’lerini web’in her yerinde bulabilirsiniz, muhtemelen bugün farkında olmadan bazılarını kullanmış olabilirsiniz. 

1. Twitter

Twitter API, üçüncü taraf uygulamaların veri okuyup yazmasını sağlar. Tweet yazmak ve göndermek, tweet paylaşmak ve profilleri okumak için kullanılabilir. Bu API, özellikle belirli konular hakkında büyük miktarda tweet indirmek ve analiz etmek için etkilidir.

2. Instagram

Instagram Temel Görüntüleme API’si profil bilgilerine, fotoğraflara ve videolara erişim sunar. Bu API’yi ve diğerlerini kullanarak bu kullanıcı bilgilerini çeken ve kendi ürününüze entegre eden uygulamalar oluşturabilirsiniz. Instagram ayrıca profesyonel Instagram hesaplarının çevrimiçi etkinliklerini yönetebilmeleri için bir Graph API’ye de sahiptir.

3. Spotify

Spotify’ın web API’si, istemcilerin platformundaki sanatçılar, şarkılar, albümler ve çalma listeleri hakkında bilgi talep etmesine olanak tanır. Ayrıca çalma listelerine şarkı eklemek, müziği duraklatmak ve çalmak, şarkıları karıştırmak ve çok daha fazlası için de kullanabilirsiniz.

4. HubSpot

HubSpot’un tüm API’leri REST kurallarına göre hazırlanmıştır ve işletmelerin HubSpot’un araçlarından en yüksek değeri elde etmesine yardımcı olan sağlam entegrasyonlar için tasarlanmıştır. Bu sayede HubSpot’un güçlü pazarlama yazılımına gelişmiş işlevler ekleyebilir ve HubSpot hesabınızı diğer kullanışlı araçlarla senkronize edebilirsiniz.