4.2. RESTful API

REST, REpresentational State Transfer (Temsili Durum Aktarımı) anlamına gelir. REST, w3c standartlarına dayalı bir mimaridir ve HTTP protokolünü kullanır. REST kurallarını sağlayan sistemler RESTful olarak adlandırılır. REST, her bileşenin bir kaynak olduğu ve kaynağın HTTP standart yöntemlerini kullanarak ortak bir arabirim tarafından erişildiği kaynaklar etrafında döner. REST ilk olarak Roy Fielding tarafından 2000 yılında tanıtılmıştır.

Bir REST sunucusu basitçe kaynaklara erişim sağlar ve REST istemcisi HTTP protokolünü kullanarak kaynaklara erişir ve değiştirir. Burada her kaynak URI / Global ID’lerle tanımlanır. REST metin, JSON XML gibi bir kaynağı temsil etmek için çeşitli gösterimler kullanır. Bu arada en popüler kaynak JSON’dır.

HTTP yöntemleri

Dört HTTP yöntemi aşağıdaki REST tabanlı mimaride yaygın olarak kullanılmaktadır.

  • GET – Bu, bir kaynağa salt okunur erişim sağlamak için kullanılır.
  • PUT – Bu, yeni bir kaynak oluşturmak için kullanılır.
  • DELETE – Bu bir kaynağı kaldırmak için kullanılır.
  • POST – Mevcut bir kaynağı güncellemek veya yeni bir kaynak oluşturmak için kullanılır.

RESTful Web Servisleri

Bir web servisi, uygulamalar veya sistemler arasında veri alışverişinde kullanılan açık protokol ve standartların bir toplamıdır. Çeşitli programlama dillerinde yazılmış ve çeşitli platformlarda çalışan yazılım uygulamaları, web hizmetleri, tek bir bilgisayarda işlemler arası iletişime benzer şekilde İnternet gibi bilgisayar ağları üzerinden veri alışverişi yapmak için kullanılabilir. Bu birlikte işlerlik (örneğin Java ve Python arasındaki iletişim veya Windows ve Linux uygulamaları), açık standartların kullanımından kaynaklanmaktadır.

REST Mimarisi tabanlı web hizmetleri RESTful web hizmetleri olarak bilinir. Bu web servisleri, REST mimarisi kavramını uygulamak için HTTP yöntemlerini kullanmaktadır. RESTful bir web servisi genelde bir URI, Uniform Resource Identifier (JSON ve HTTP Metotları seti gibi kaynak gösterimi sağlayan bir hizmet) tanımlar.

 

Bir RESTful Örneği

JSON formatında “users.json” adında aşağıdaki verileri içeren bir dosyamız olsun. Bu dosyayı bir veritabanı gibi düşünelim.

Bu verilere uygun olarak aşağıdaki RESTful API’leri yaratabiliriz.

URIHTTP MetotPOST bodyResult
listUsersGETemptyShow list of all the users.
addUserPOSTJSON StringAdd details of new user.
deleteUserDELETEJSON StringDelete an existing user.
:idGETemptyShow details of a user.

Aşağıdaki örneklerde Form veya AJAX kullanmadan direkt verileri bir değişken gibi alınacaktır. Önceki bölümlerde anlatılan Express – Request nesnesi üzerinden verileri işleyebiliriz ve daha güzel bir görünüm tasarlayabilirsiniz.

listUsers (Kullanıcı Listeleme)

Kullanıcıları dosyadan okuyup istemciye göndermek için aşağıdaki gibi bir kod yazabiliriz.

Programı yorumlandıktan sonra tarayıcımızı açıp “http://127.0.0.1:8081/listUsers” yazarak tanımlanmış API’ye erişerek deneyelim. Bu örnekte herhangi bir REST istemcisini kullanan yerel makineye HTTP Metot: GET istemi gönderilmiştir.

addUser (Kullanıcı Ekleme)

Bu örnekte veri bir HTML Form üzerinden alınmayacaktır. Sanki veri HTML Form’dan alınmış JSON formatına çevrilmiş ve bir değişken içine aktarılmış gibi düşünelim. Aşağıdaki örnekte bu değişken ismi “user” dır.

Bu örnekte  http://127.0.0.1:8081/addUser adresine POST metodu ile tanımlanan API üzerinden erişilmiştir. Sonuç dosyaya değil, bir JSON çıktısı olarak istemciye gönderilmiştir. Burada, JSON.stringify metodu veriyi JSON formatına çevirmekte kullanılmıştır.

:id (Show Detail – Ayrıntı Göster)

Bu örnekte, bir kullancı ID’si üzerinden GET metodu ile veriler istenecektir. Örneğin “http://127.0.0.1:8081/2” gibi bir istemde 2 nolu ID’ye sahip kullanıcın bilgileri gönderilecektir.

deleteUser (Kullancı Sil)

Bu örnekte bir kullanıcı listeden silinip sadece kalan kullanıcılar JSON formatında istemciye gönderilecektir. Silme işleminde yukarıdaki gibi URL üzerinden ID bilgisi alınabilir. Ama bu örnekte id değişkene 2 sabit değeri verilecektir.

Bu örneklerde basit bir şekilde 4 işlem anlatılmıştır. Aslında bu örneği alıp veritabanına bağlayıp HTML FORM’ları hazırlayıp daha görsel ve işlevsel bir uygulama geliştirebilirsiniz. Buradaki amaç REST API’leri nasıl çalıştığını göstermekti.