Rest ve Restful Servisler

Rest ve Restful Servisler

1) Rest Nedir?

  • REST veya REpresentational State Transferi, web üzerindeki bilgisayar sistemleri arasında standartlar sağlayarak sistemlerin birbirleriyle iletişim kurmasını kolaylaştıran bir mimari stildir. Genellikle RESTful sistemler olarak adlandırılan REST uyumlu sistemler, durum bilgisinin olmaması ve istemci ile sunucunun endişelerini ayırmasıyla karakterize edilir. Bu terimlerin ne anlama geldiğini ve neden Web’deki hizmetler için faydalı özellikler olduklarını inceleyeceğiz.

  • REST, daha çok bir yazılım mimarisi tarzıdır ve ağ kaynaklarının HTTP üzerinden nasıl adresleneceğini ve manipüle edileceğini tanımlar.

  • REST arayüzünü kullanarak, farklı istemciler aynı REST uç noktalarına ulaşır, aynı eylemleri gerçekleştirir ve aynı yanıtları alır.

  • REST, başlangıçta internet gibi karmaşık bir ağdaki iletişimi yönetmek için bir kılavuz olarak oluşturulmuştu. REST tabanlı mimariyi yüksek performanslı ve güvenilir iletişimi doğru ölçekte desteklemek için kullanabiliriz. Bu mimariyi kolayca uygulayabilir, değiştirebilir ve böylece, herhangi bir API sistemine görünürlük ve platformlar arası taşınabilirlik sağlayabiliriz.

  • API geliştiricileri, birkaç farklı mimariyi kullanarak API’ler tasarlayabilir. REST mimari stiline uygun API’lere REST API’ler adı verilir. REST mimarisini uygulayan web hizmetlerine RESTful web hizmetleri adı verilir. RESTful API terimi genellikle RESTful web API’lerini ifade eder.

REST mimarisine ilişkin ilkelerden bazıları:

  • Tek biçimli arabirim

  • Durumsuzluk

  • Katmanlı sistem

  • Önbelleğe alınabilirlik

  • İstek üzerine kod

Not: Representational state transfer; İlgili isteğe karşılık gelen verinin JSON / XML gibi dosya formatlarında gönderilmesidir.

REST API, REST mimarisinin prensiplerine taşıyan API’lardır. Tüm prensiplerin karşılanması durumunda RESTful API olarak da adlandırılır.

2) RESTful API Nedir?

  • RESTful API, iki bilgisayar sisteminin internet üzerinden güvenli bir şekilde bilgi alışverişi yapmak için kullandığı bir arabirimdir. Çoğu iş uygulaması, çeşitli görevleri gerçekleştirmek için diğer dahili ve üçüncü taraf uygulamalarla iletişim kurmak zorundadır.

RESTful API’lerin avantajları nelerdir?

  • Ölçeklenebilirlik

REST, istemci-sunucu etkileşimlerini optimize ettiğinden, REST API’leri uygulayan sistemler verimli şekilde ölçeklendirme yapabilir. Durumsuzluk; sunucunun, geçmiş istemci istek bilgilerini saklaması gerekmediğinden sunucu yükünü ortadan kaldırır. İyi yönetilen önbelleğe alma süreci, bazı istemci-sunucu etkileşimlerini kısmen veya tamamen ortadan kaldırır. Tüm bu özellikler, performansı azaltan iletişim tıkanıklıklarına neden olmadan ölçeklendirmeyi destekler.

  • Esneklik

RESTful web hizmetleri, toplam istemci-sunucu ayrımını destekler. Bu hizmetler, her bir parçanın bağımsız olarak gelişebilmesi için çeşitli sunucu bileşenlerini basitleştirir ve birbirinden ayırır. Sunucu uygulamasındaki platform veya teknoloji değişiklikleri, istemci uygulamasını etkilemez. Uygulama işlevlerini katmanlama özelliği, esnekliği daha da artırır. Örneğin, geliştiriciler uygulama mantığını yeniden yazmadan veritabanı katmanında değişiklikler yapabilir.

  • Bağımsızlık

REST API’ler, kullanılan teknolojiden bağımsızdır. API tasarımını etkilemeden hem istemci hem de sunucu uygulamalarını çeşitli programlama dillerinde yazabilirsiniz. Ayrıca, iletişimi etkilemeden her iki taraftaki temel teknolojiyi de değiştirebiliriz.

RESTful API’ler nasıl çalışır?

Bir RESTful API’nin temel işlevi, internette gezinmeyle aynıdır. İstemci, bir kaynağa ihtiyaç duyduğunda API’yi kullanarak sunucu ile iletişime geçer. API geliştiricileri, istemcinin REST API’yi nasıl kullanması gerektiğini sunucu uygulamasının API belgelerinde açıklar. Herhangi bir REST API çağrısına yönelik genel adımlar şunlardır:

  1. İstemci, sunucuya bir istek gönderir. İstemci, isteği sunucunun anlayacağı şekilde biçimlendirmek için API belgelerine uyar.

  2. Sunucu, istemcinin kimliğini doğrular ve istemcinin bu istekte bulunma hakkı olduğunu onaylar.

  3. Sunucu, isteği alır ve dahili olarak işler.

  4. Sunucu, istemciye bir yanıt verir. Yanıt, istemciye isteğin başarılı olup olmadığını söyleyen bilgileri içerir. Yanıt aynı zamanda, istemcinin talep ettiği bilgileri de içerir.

REST API isteği ve yanıt ayrıntıları, API geliştiricilerinin API’yi nasıl tasarladığına bağlı olarak küçük farklılıklar gösterir.

RESTful API sunucu yanıtı neleri içerir?

REST ilkeleri, sunucu yanıtının şu bileşenleri içermesini gerektirir:

* Durum satırı

Durum satırı, isteğin başarılı veya başarısız olduğunu belirten üç haneli bir durum kodu içerir. Örneğin, 2XX kodları başarıyı ifade ederken 4XX ve 5XX kodları hataları belirtir. 3XX kodları ise URL yönlendirmesini ifade eder.

Başlıca durum kodlarından bazıları aşağıdaki gibidir:

  • 200: Genel başarı yanıtı

  • 201: POST yöntemi başarılı yanıtı

  • 400: Sunucunun işleyemediği yanlış istek

  • 404: Kaynak bulunamadı

* Mesaj gövdesi

Yanıt gövdesi, kaynak gösterimini içerir. Sunucu, istek üst bilgilerinin ne içerdiğine bağlı olarak uygun bir gösterim formatı seçer. İstemciler, bilgileri verilerin düz metin olarak nasıl yazılacağını tanımlayan XML veya JSON formatında talep edebilir. Örneğin, istemci Can adında bir kişinin adını ve yaşını talep ederse sunucu, aşağıdaki gibi bir JSON gösterimi sunar:

‘{“ad”:”Gülsün”, “yaş”:25}’

* Üst Bilgiler

İstek, yanıtla ilgili üst bilgileri veya meta verileri de içerir. Bunlar, yanıt hakkında daha fazla bağlam sunar ve sunucu, kodlama, tarih ve içerik türü gibi bilgileri de içerir.

REST API ile RESTful API Arasındaki Farklar

  1. Kavramsal vs. Uygulamalı: REST bir mimari stil iken, RESTful API bu stilin somut bir uygulamasıdır.

  2. Genellik vs. Özgüllük: REST, birçok protokol ve ortamda kullanılabilir bir modeldir. RESTful API ise genellikle HTTP protokolü üzerinden çalışır.

  3. Kısıtlamalar ve Prensipler: RESTful API, REST mimarisinin kısıtlamalarını ve prensiplerini uygular.

  4. Teknoloji Bağımsızlık: REST prensipleri, HTTP dışında farklı protokollerle de kullanılabilirken, RESTful API genellikle HTTP ile sınırlıdır.

  5. Kaynak Tanımı: RESTful API’lar, belirli bir URL şeması ile kaynakları tanımlar ve bu kaynaklara HTTP metotları ile erişim sağlar.

Not: REST daha çok teorik ve geniş kapsamlı bir kavramken, RESTful API bu teorinin pratiğe dökülmüş halidir.