Rest (Representational State Transfer), Server (Sunucu) ve Client (İstemci) arasında veri alışverişini sağlayan bir mimari modeldir. Rest API de Rest mimarisinin kullanımıyla web hizmetleri arasında veri alışverişini sağlayan uygulama ara birimidir.
Rest API metodunu ve içindeki bileşenlerini daha iyi açıklayabilmek için öncelikle bazı kavramların ne olduğunu ve ne işe yaradığını açıklamalıyız. Bu sebeple “Rest API Nedir ve Nasıl Çalışır?” konusuna girmeden önce bazı teknik terimlerin tanımlamasını yapalım isterseniz.
URL (Uniform Resource Locator) Tekdüzen Kaynak Bulucu aslında internet üzerinde yayınlanan verilerin kaynağının bulunduğu konumu tanımlamaya yarayan adreslerdir. URL adreslerini bir internet sitesinde bulunan içerik, veri, dosya gibi bileşenlere ulaşılmasını sağlayan dosya yolu olarak da tanımlayabiliriz. İnternet sayfaları ve internet üzerindeki bilgilere URL adresleri ile ulaşabiliyoruz. Örnek normal bir URL yapısına aşağıdaki örnek verilebilir.
HTTP (HyperText Transfer Protocol), Sunucu (Server) ve İstemci (Client) arasında internet adresi üzerinden bağlantı oluşturmak ve verilerin aktarılması için kullanılan ve internet sitelerinin bağlantıları için uzun zamandır kullanılan bir TCP/IP protokolüdür.
HTTP İstekleri (Request) bu veri alışverişin nasıl olacağına dair tanımlamalar yaparak işlemin gerçekleşmesini sağlarlar. GET, POST, DELETE, PUT gibi komutlar İstemci ve Sunucu arasındaki işlemler için kullanılırlar. HTTP istekleri sırasında istemci ve sunucu arasındaki Requestlere belli anlamları olan durum kodlarıyla yanıt verilir. Bu yanıtları kullanıcılar görmez bu iletişim İstemci ve Sunucu arasında gerçekleşir.
API (Application Programming Interface) yani Uygulama Programlama Arayüzü şeklinde Türkçeye çevrilebilen bir modüldür. API sayesinde programlar, kendilerinde olmayan ve farklı programlarda mevcut olan bazı işlev ve kabiliyetleri çekerek kendi bünyesinde çalıştırabiliyor.
Özetle bir programın işlevini, başka bir program üzerinde çalıştırabilmek için API denen servisleri kullanırız. Genelde web tabanlı uygulamalarda sık kullanılan bir araç olan API’ler sayesinde internet uygulamaları çok daha kullanışlı bir yapıya kavuşabiliyor.
SOAP (Simple Object Access Protocol) yani Basit Nesne Erişim Protokolü, dağıtık yapıda bulunan web servislerinin iletişimi gerçekleştirmek üzere kullanılan Sunucu – İstemci mantığında çalışan bir protokoldür. RPC (Remote Procedure Call) modelini kullanan SOAP, keskin kurallar kullanarak iletişim gerçekleştirir.
Veri iletimlerinde ise XML formatı kullanılır. SOAP’ın ilk kurgusu Rest API’ye göre daha zordur ancak bir defa yapılandırdıktan sonra sorunsuz bir şekilde çalışır. Çoğu yazılımcı hafif kolay yapılandırılan servisleri kullanmayı tercih eder ancak, bazen kolay yapılandırılan servisler kullanım esnasında daha farklı sıkıntılara neden olabilirler.
JSON (JavaScript Object Notation) tüm sunucular arasında haberleşme için kullanılan ve verilerin XML’e göre daha az komplike, daha küçük boyutta ve daha kolay taşınmasını sağlayan bir protokoldür. XML yerine daha hafif bir yapıda olduğu için daha çok tercih edilir. SOAP veri taşınması için XML kullanırken Rest API, verilerin taşınması için JSON formatını kullanır.
Rest, HTTP protokolünü kullanarak, URL adresleri üzerinden veri ve dosya alışverişi sağlayan bir yapıdır. Rest API ise Rest işlemini yapabilmek için kurgulanmış modüle verilen isimdir. Bu API (Modül) yardımıyla Rest işlemleri ve veri alışverişi yapılıyor.
SOAP yerine neden Rest tercih ediliyor derseniz;
Rest ile oluşturulan Server – Client bağlantısı sonucunda veri alışverişi belirli istekler sayesinde gerçekleşir. Rest sırasında kullanılan HTTP istekleri ve işlevleri aşağıdaki gibidir;
Bir Rest API örneklemi;
http://api.example.com/device-management/managed-devices/{id}/scripts/{id}
Veri listeleme sonuçları 200 durum koduyla yanıtlanır.
Veri eklendiği zaman 201 ile yanıt verilir.
Veri silindiği zaman verilen yanıt 204’tür.
Kayıt ekleme ve güncelleme talebinde gönderilen veri doğrulamadan geçemezse ve sorun yaşanırsa 400 yanıtı gönderilir.
API yardımıyla yapılan Client – Server bağlantısı için bir login işlemi yapılması gerekirken login yapılmadıysa 401 yanıtı verilir.
401 deki gibi Authorization işlemi gereken yerde yetkisiz giriş yapılmaya çalışılırsa 403 yanıtı verilir.
Verinin talep edildiği URL adresi yok veya bahsedilen URL adresindeki veri geçersiz bir veri ise 404 yanıtı verilir.
Sunucunun belirli sayıda yapılacak istek sayısı kısıtlıdır ve bu kapasiteni üstünde bir istek geldiği zaman 429 yanıtı verilerek reddedilir.