REST (Temsilî Durum Aktarımı; İng. İngilizce: Representational state transfer), Web protokolleri ve teknolojilerini kullanan bir dağıtık sistemdir. REST prensiplerini sağlayan sistemler, RESTful olarak sıfatlandırılır. Temsilî Durum Aktarımı ismindeki temsilî (İng. İngilizce: representational), verinin temsilini kastetmekte olup onunla ilgili durumun aktarılması olarak düşünülebilir.
2000 yılında HTTP spesifikasyonunun yazarlarından biri olan Roy Fielding tarafından doktora tezinin bir parçası olarak geliştirilmiştir.
SOAP ve tabanlı Web servislerine spesifikasyon olarak daha basit bir alternatif olarak geliştirilmiştir. RESTful sistemler çoğunlukla HTTP protokolü üzerinden Web tarayıcıları tarafından sayfaların transferinde de kullanılan HTTP fiilleri (GET, POST, PUT, DELETE vs.) ile haberleşirler.
Aktarılan verinin formatı HTML, JSON, XML ya da farklı bir tipte olabilir. REST, bu konuda bir kısıtlama getirmez. Aktarılan verinin tipi ve özellikleri istemci ve sunucu tarafından HTTP protokolünde yer alan İngilizce: content-type (içerik tipi) ve benzeri metaveri ile tanımlanır.
Tarihçesi
REST, ilk defa 'in 2000 yılındaki "Mimari tarzları ve ağ tabanlı yazılım mimarisi tasarımları" (İng. "İngilizce: Architectural Styles and the Design of Network-based Software Architectures") adlı doktora tezinde teklif edildi. Fielding, REST mimari tarzını 1996-1999 arasında HTTP 1.0'ın mevcut tasarımına dayanarak HTTP 1.1 ile paralel olarak 1996'da geliştirdi.
Mimarî özellikleri
REST mimarî tarzıyla etkilenen mimarî özellikler şunlardır:
- Performans - bileşen etkileşimleri, kullanıcının tespit ettiği performans ve ağ verimliliğinde dominant faktör olabilir.
- Çok sayıda bileşeni ve bileşenlerarası etkileşimi yapmak.
- Arayüzlerin sadeliği
- Değişen ihtiyaçları karşılamak için (uygulama yürütülürken dahi) bileşenlerin değiştirilebilirliği
- Hizmet vekillerince (İng. İngilizce: service agents) tarafından bileşenlerarası haberleşmenin görünürlüğü
- Program kodunu veriyle beraber hareket ettirerek bileşenlerin taşınabilirliği
- Sistem seviyesinde bileşenlerde, bağlantılarda veya verideki hatalara rağmen hataya karşı direnç güvenilirliği
Mimarî sınırlamaları
REST'in mimarî özellikleri, bağlantılara, bileşenlere ve veri elementlerine belli etkileşim sınırlamaları uygulayarak erişilir. Bu bölümdeki özelliklere sahip uygulamalar, "RESTful" olarak tasvir edilir. Eğer gerekli sınırlamaların herhangi birini ihlâl ederse artık RESTful olarak görülemezler. Bu sınırlamalarla uyumlu olma ve böylece REST mimarî stiliyle uyuşma, her çeşit sisteminin performans, ölçeklenebilirlir, sadelik, değiştirilebilirlik, görünürlük, taşınabilirlik ve güvenilirlik gibi cazip sahip olmasını sağlar.
Formel REST sınırlamaları şunlardır:
İstemci–sunucu
İstemcileri sunuculardan ayıran yeknesak bir arayüz. Bu, kavramların ayrılması (İng. İngilizce: separation of concerns), yani mesela istemcilerin sunucu dahilinde yapılmakta olan veri saklama ile ilgilenmedikleridir. Bunun sonucunda istemci yazılımının iyileşir. Sunucular da istemcilerde bulunan kullanıcı durumuyla ilgilenmezler. Böylece sunucular daha sade ve daha olurlar. Sunucular ve istemciler de aralarındaki arayüz değiştirilmemesi şartıyla aynı fonksiyona sahip başkalarıyla değiştirilebilir ve farklı gruplarca birbirinden bağımsız olarak geliştirilebilirler.
Durumsuzluk
İstemci–sunucu haberleşmesi, iki talep arasında hiçbir istemci ortamının (İng. İngilizce: client context) sunucuda saklanmamasıyla daha fazla sınırlanmaktadır. Her istemciden gelen talep, hizmeti vermek için lazım olan bütün bilgileri içerir ve oturum durumu istemcide saklı kalır. Oturum durumu, sunucu tarafından veri tabanı gibi başka bir hizmete bir süre için transfer edilebilip denetlenebilir. İstemci, yeni bir duruma geçmek üzereyken istekler yollar. Bir veya birkaç istek yerine getirilmemişken istemci geçiş durumundadır (İng. İngilizce: to be in transition). Her uygulama durumunun sunumu, bu istemci yeni bir durum geçişi başlatacağı zaman tekrar kullanılabilecek bağlantılar ihtiva eder.
Ön belleklenebilme
World Wide Web'de istemciler ve aracılar, cevapları ön belleğe alabilirler. Bu yüzden cevaplar, doğrudan veya dolaylı olarak kendilerini ön belleklenebilir (İng. İngilizce: cacheable) veya ön belleklenemez olarak tanımlamalıdırlar. Böylece başka isteklere cevaben istemcilerin bayat veya uygunsuz veri kullanımı önlenir. İyi yönetilmiş ön bellekleme (İng. İngilizce: caching) ile bâzı istemci–sunucu etkileşimlerini kısmen veya tamamen bertaraf edilir, böylece ölçeklenebilirlik ve performans daha da iyileşir.
Tabakalı sistem
İstemci, genelde sondaki sunucuya veya yol boyunca bir aracıya bağlı olup olmadığını söyleyemez. Aracı sunucular, yük dengelemesi (İng. İngilizce: load balancing) ve bölüşülmüş ön bellekler (İng. İngilizce: shared caches) sağlayarak sistem ölçeklenebilirliği geliştirir. Bunun yanında güvenlik ilkelerini de güçlendirirler.
Talep üzerine kod (isteğe bağlı)
Sunucular, geçici olarak istemcinin fonksiyonelliğini icra edilebilir kod yollayarak genişletebilir ya da özelleştirebilir (İng. İngilizce: extend or customize code). Java appletler ve JavaScript gibi istemci tarafı betikler bunlardan sayılır. "Talep üzerine kod", REST mimarisinde isteğe bağlı olan tek sınırlamadır.
Yeknesak arayüz
Yeknesak arayüzü sınırlaması, her REST hizmeti için bir temel teşkil eder. eknesak arayüz, mimariyle sadeleştirip ayırır, böylece her taraf birbirinden bağımsız olarak gelişebilir. Yeknesak arayüzünün dört sınırlaması şunlardır:
- Kaynakların belirlenmesi (İng. İngilizce: identification of resources)
- Başlıbaşına kaynaklar, isteklerle belirlenir. Bu, mesela Web tabanlı sistemlerde yeknesak kaynak kimliği (İng. İngilizce: uniform resource identifier, URI) kullanılarak yapılır. Kaynaklar, kavramsal olarak istemcilere döndürülen sunumlarından (İng. İngilizce: representation) farklıdırlar. Mesela sunucu, hiçbirisi dahilî sunumu olmamasına rağmen veri tabanından gelen veriyi HTML, JSON veya XML olarak gönderebilir.
- Bu temsiller yoluyla kaynakların manipülasyonu
- Bir istemci temsilî kaynağı ona bağlı herhangi bir metaveriyle birlikte bulunduruyorsa bu kaynağı değiştirmek veya silmek için yeteri kadar bilgisi vardır.
- Kendinden açıklayıcı mesajlar
- Her mesajda kendisinin nasıl işleneceğine dair yeterli bilgi mevcuttur. Mesela hangi ayrıştırıcının (İng. İngilizce: parser) çalıştırılacağı bir (İng. İngilizce: Internet media type, eskiden (İngilizce: MIME type) olarak bilinirdi) ile belirlenmiş olabilir. Uygulama durumu motoru olarak hipermedya (İng. İngilizce: hypermedia as the engine of application state (HATEOAS))
- İstemciler durum değişimini ancak sunucu tarafından hipermedya ile belirlenmiş dinamik eylemlerle yapabilirler (mesela hiper metinlerin içinde bulunan ). Basit başlama noktalarının haricinde bir istemci, önceki temsillerle haber aldığının dışında herhangi bir kaynak için herhangi bir eylemin mevcudiyetini kabul edemez.
Kaynakça
- ^ . 19 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Mart 2015.
- ^ Roy Fielding (2000). "Architectural Styles and the Design of Network-based Software Architectures". UCU Donald Bren – School of Information & Computer Science. 19 Mart 2015 tarihinde kaynağından . Erişim tarihi: 19 Mart 2015.
- ^ a b c d e f Fielding, Roy Thomas (2000). "Chapter 5: Representational State Transfer (REST)". Architectural Styles and the Design of Network-based Software Architectures (Ph.D.). University of California, Irvine.
This chapter introduced the Representational State Transfer (REST) architectural style for distributed hypermedia systems. REST provides a set of architectural constraints that, when applied as a whole, emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems.
- ^ . Tech.groups.yahoo.com. 1 Eylül 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Eylül 2014.
- ^ a b Thomas Erl, Benjamin Carlyle, Cesare Pautasso, Raj Balasubramanian (2013). "5.1". Thomas Erl (Ed.). SOA with REST. Prentice Hall. ISBN .
- ^ a b Fielding, Roy Thomas (2000). "Chapter 2: Network-based Application Architectures". Architectural Styles and the Design of Network-based Software Architectures (Ph.D.). University of California, Irvine.
- ^ Richardson, Leonard; Ruby, Sam (2007), RESTful Web service, O'Reilly Media, ISBN , 19 Şubat 2012 tarihinde kaynağından , erişim tarihi: 18 Ocak 2011,
The main topic of this book is the web service architectures which can be considered RESTful: those which get a good score when judged on the criteria set forth in Roy Fielding's dissertation.
- ^ "Fielding talks about application states". Tech.groups.yahoo.com. 21 Mayıs 2012 tarihinde kaynağından . Erişim tarihi: 7 Şubat 2013.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
REST Temsili Durum Aktarimi Ing Ingilizce Representational state transfer Web protokolleri ve teknolojilerini kullanan bir dagitik sistemdir REST prensiplerini saglayan sistemler RESTful olarak sifatlandirilir Temsili Durum Aktarimi ismindeki temsili Ing Ingilizce representational verinin temsilini kastetmekte olup onunla ilgili durumun aktarilmasi olarak dusunulebilir 2000 yilinda HTTP spesifikasyonunun yazarlarindan biri olan Roy Fielding tarafindan doktora tezinin bir parcasi olarak gelistirilmistir SOAP ve tabanli Web servislerine spesifikasyon olarak daha basit bir alternatif olarak gelistirilmistir RESTful sistemler cogunlukla HTTP protokolu uzerinden Web tarayicilari tarafindan sayfalarin transferinde de kullanilan HTTP fiilleri GET POST PUT DELETE vs ile haberlesirler Aktarilan verinin formati HTML JSON XML ya da farkli bir tipte olabilir REST bu konuda bir kisitlama getirmez Aktarilan verinin tipi ve ozellikleri istemci ve sunucu tarafindan HTTP protokolunde yer alan Ingilizce content type icerik tipi ve benzeri metaveri ile tanimlanir TarihcesiREST ilk defa in 2000 yilindaki Mimari tarzlari ve ag tabanli yazilim mimarisi tasarimlari Ing Ingilizce Architectural Styles and the Design of Network based Software Architectures adli doktora tezinde teklif edildi Fielding REST mimari tarzini 1996 1999 arasinda HTTP 1 0 in mevcut tasarimina dayanarak HTTP 1 1 ile paralel olarak 1996 da gelistirdi Mimari ozellikleriREST mimari tarziyla etkilenen mimari ozellikler sunlardir Performans bilesen etkilesimleri kullanicinin tespit ettigi performans ve ag verimliliginde dominant faktor olabilir Cok sayida bileseni ve bilesenlerarasi etkilesimi yapmak Arayuzlerin sadeligi Degisen ihtiyaclari karsilamak icin uygulama yurutulurken dahi bilesenlerin degistirilebilirligi Hizmet vekillerince Ing Ingilizce service agents tarafindan bilesenlerarasi haberlesmenin gorunurlugu Program kodunu veriyle beraber hareket ettirerek bilesenlerin tasinabilirligi Sistem seviyesinde bilesenlerde baglantilarda veya verideki hatalara ragmen hataya karsi direnc guvenilirligiMimari sinirlamalariREST in mimari ozellikleri baglantilara bilesenlere ve veri elementlerine belli etkilesim sinirlamalari uygulayarak erisilir Bu bolumdeki ozelliklere sahip uygulamalar RESTful olarak tasvir edilir Eger gerekli sinirlamalarin herhangi birini ihlal ederse artik RESTful olarak gorulemezler Bu sinirlamalarla uyumlu olma ve boylece REST mimari stiliyle uyusma her cesit sisteminin performans olceklenebilirlir sadelik degistirilebilirlik gorunurluk tasinabilirlik ve guvenilirlik gibi cazip sahip olmasini saglar Formel REST sinirlamalari sunlardir Istemci sunucu Istemcileri sunuculardan ayiran yeknesak bir arayuz Bu kavramlarin ayrilmasi Ing Ingilizce separation of concerns yani mesela istemcilerin sunucu dahilinde yapilmakta olan veri saklama ile ilgilenmedikleridir Bunun sonucunda istemci yaziliminin iyilesir Sunucular da istemcilerde bulunan kullanici durumuyla ilgilenmezler Boylece sunucular daha sade ve daha olurlar Sunucular ve istemciler de aralarindaki arayuz degistirilmemesi sartiyla ayni fonksiyona sahip baskalariyla degistirilebilir ve farkli gruplarca birbirinden bagimsiz olarak gelistirilebilirler Durumsuzluk Istemci sunucu haberlesmesi iki talep arasinda hicbir istemci ortaminin Ing Ingilizce client context sunucuda saklanmamasiyla daha fazla sinirlanmaktadir Her istemciden gelen talep hizmeti vermek icin lazim olan butun bilgileri icerir ve oturum durumu istemcide sakli kalir Oturum durumu sunucu tarafindan veri tabani gibi baska bir hizmete bir sure icin transfer edilebilip denetlenebilir Istemci yeni bir duruma gecmek uzereyken istekler yollar Bir veya birkac istek yerine getirilmemisken istemci gecis durumundadir Ing Ingilizce to be in transition Her uygulama durumunun sunumu bu istemci yeni bir durum gecisi baslatacagi zaman tekrar kullanilabilecek baglantilar ihtiva eder On belleklenebilme World Wide Web de istemciler ve aracilar cevaplari on bellege alabilirler Bu yuzden cevaplar dogrudan veya dolayli olarak kendilerini on belleklenebilir Ing Ingilizce cacheable veya on belleklenemez olarak tanimlamalidirlar Boylece baska isteklere cevaben istemcilerin bayat veya uygunsuz veri kullanimi onlenir Iyi yonetilmis on bellekleme Ing Ingilizce caching ile bazi istemci sunucu etkilesimlerini kismen veya tamamen bertaraf edilir boylece olceklenebilirlik ve performans daha da iyilesir Tabakali sistem Istemci genelde sondaki sunucuya veya yol boyunca bir araciya bagli olup olmadigini soyleyemez Araci sunucular yuk dengelemesi Ing Ingilizce load balancing ve bolusulmus on bellekler Ing Ingilizce shared caches saglayarak sistem olceklenebilirligi gelistirir Bunun yaninda guvenlik ilkelerini de guclendirirler Talep uzerine kod istege bagli Sunucular gecici olarak istemcinin fonksiyonelligini icra edilebilir kod yollayarak genisletebilir ya da ozellestirebilir Ing Ingilizce extend or customize code Java appletler ve JavaScript gibi istemci tarafi betikler bunlardan sayilir Talep uzerine kod REST mimarisinde istege bagli olan tek sinirlamadir Yeknesak arayuz Yeknesak arayuzu sinirlamasi her REST hizmeti icin bir temel teskil eder eknesak arayuz mimariyle sadelestirip ayirir boylece her taraf birbirinden bagimsiz olarak gelisebilir Yeknesak arayuzunun dort sinirlamasi sunlardir Kaynaklarin belirlenmesi Ing Ingilizce identification of resources Baslibasina kaynaklar isteklerle belirlenir Bu mesela Web tabanli sistemlerde yeknesak kaynak kimligi Ing Ingilizce uniform resource identifier URI kullanilarak yapilir Kaynaklar kavramsal olarak istemcilere dondurulen sunumlarindan Ing Ingilizce representation farklidirlar Mesela sunucu hicbirisi dahili sunumu olmamasina ragmen veri tabanindan gelen veriyi HTML JSON veya XML olarak gonderebilir Bu temsiller yoluyla kaynaklarin manipulasyonu Bir istemci temsili kaynagi ona bagli herhangi bir metaveriyle birlikte bulunduruyorsa bu kaynagi degistirmek veya silmek icin yeteri kadar bilgisi vardir Kendinden aciklayici mesajlar Her mesajda kendisinin nasil islenecegine dair yeterli bilgi mevcuttur Mesela hangi ayristiricinin Ing Ingilizce parser calistirilacagi bir Ing Ingilizce Internet media type eskiden Ingilizce MIME type olarak bilinirdi ile belirlenmis olabilir Uygulama durumu motoru olarak hipermedya Ing Ingilizce hypermedia as the engine of application state HATEOAS Istemciler durum degisimini ancak sunucu tarafindan hipermedya ile belirlenmis dinamik eylemlerle yapabilirler mesela hiper metinlerin icinde bulunan Basit baslama noktalarinin haricinde bir istemci onceki temsillerle haber aldiginin disinda herhangi bir kaynak icin herhangi bir eylemin mevcudiyetini kabul edemez Kaynakca 19 Kasim 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 19 Mart 2015 Roy Fielding 2000 Architectural Styles and the Design of Network based Software Architectures UCU Donald Bren School of Information amp Computer Science 19 Mart 2015 tarihinde kaynagindan Erisim tarihi 19 Mart 2015 a b c d e f Fielding Roy Thomas 2000 Chapter 5 Representational State Transfer REST Architectural Styles and the Design of Network based Software Architectures Ph D University of California Irvine This chapter introduced the Representational State Transfer REST architectural style for distributed hypermedia systems REST provides a set of architectural constraints that when applied as a whole emphasizes scalability of component interactions generality of interfaces independent deployment of components and intermediary components to reduce interaction latency enforce security and encapsulate legacy systems Tech groups yahoo com 1 Eylul 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 14 Eylul 2014 a b Thomas Erl Benjamin Carlyle Cesare Pautasso Raj Balasubramanian 2013 5 1 Thomas Erl Ed SOA with REST Prentice Hall ISBN 978 0 13 701251 0 a b Fielding Roy Thomas 2000 Chapter 2 Network based Application Architectures Architectural Styles and the Design of Network based Software Architectures Ph D University of California Irvine Richardson Leonard Ruby Sam 2007 RESTful Web service O Reilly Media ISBN 978 0 596 52926 0 19 Subat 2012 tarihinde kaynagindan erisim tarihi 18 Ocak 2011 The main topic of this book is the web service architectures which can be considered RESTful those which get a good score when judged on the criteria set forth in Roy Fielding s dissertation Fielding talks about application states Tech groups yahoo com 21 Mayis 2012 tarihinde kaynagindan Erisim tarihi 7 Subat 2013