REST
(Temsili
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.
[1]
Temsili Durum Aktarımı ismindeki temsili (
?ng.
?ngilizce
:
representational
), verinin temsilini kastetmekte olup onunla ilgili
durumun
aktarılması olarak du?unulebilir.
2000 yılında
HTTP
spesifikasyonunun yazarlarından biri olan Roy Fielding tarafından doktora tezinin bir parcası olarak geli?tirilmi?tir.
[2]
SOAP
ve
WSDL
tabanlı Web servislerine spesifikasyon olarak daha basit bir alternatif olarak geli?tirilmi?tir. RESTful sistemler co?unlukla HTTP protokolu uzerinden
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 ozellikleri
istemci
ve
sunucu
tarafından HTTP protokolunde yer alan
?ngilizce
:
content-type
(icerik tipi) ve benzeri
metaveri
ile tanımlanır.
REST, ilk defa
Roy Thomas Fielding
'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.
[3]
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.
[4]
REST mimari tarzıyla etkilenen mimari ozellikler ?unlardır:
[3]
[5]
- Performans - bile?en etkile?imleri, kullanıcının tespit etti?i performans ve a? verimlili?inde dominant faktor olabilir.
[6]
- Cok sayıda bile?eni ve bile?enlerarası etkile?imi
olceklenebilirlik
yapmak.
- Arayuzlerin
sadeli?i
- De?i?en ihtiyacları kar?ılamak icin (uygulama yurutulurken dahi) bile?enlerin de?i?tirilebilirli?i
- Hizmet vekillerince (
?ng.
?ngilizce
:
service agents
) tarafından bile?enlerarası haberle?menin gorunurlu?u
- 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?ı direnc
guvenilirli?i
[6]
REST'in mimari ozellikleri, ba?lantılara, bile?enlere ve veri elementlerine belli etkile?im sınırlamaları uygulayarak eri?ilir.
[3]
[5]
Bu bolumdeki ozelliklere sahip uygulamalar, "RESTful" olarak tasvir edilir.
[7]
E?er
hizmetler
gerekli sınırlamaların herhangi birini ihlal ederse artık RESTful olarak gorulemezler. Bu sınırlamalarla uyumlu olma ve boylece REST mimari stiliyle uyu?ma, her ce?it
hipermedya
sisteminin performans, olceklenebilirlir, sadelik, de?i?tirilebilirlik, gorunurluk, ta?ınabilirlik ve guvenilirlik gibi cazip
fonksiyonel olmayan ozelliklere
sahip olmasını sa?lar.
[3]
Formel REST sınırlamaları ?unlardır:
?stemcileri sunuculardan ayıran yeknesak bir arayuz. 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
ta?ınabilirli?i
iyile?ir. Sunucular da istemcilerde bulunan kullanıcı durumuyla ilgilenmezler. Boylece sunucular daha sade ve daha
olceklenebilir
olurlar. Sunucular ve istemciler de aralarındaki arayuz de?i?tirilmemesi ?artıyla aynı fonksiyona sahip ba?kalarıyla de?i?tirilebilir ve farklı gruplarca birbirinden ba?ımsız olarak geli?tirilebilirler.
?stemci?sunucu haberle?mesi, iki talep arasında hicbir istemci ortamının (
?ng.
?ngilizce
:
client context
) sunucuda saklanmamasıyla daha fazla sınırlanmaktadır. Her istemciden gelen talep, hizmeti vermek icin lazım olan butun bilgileri icerir ve oturum durumu istemcide saklı kalır. Oturum durumu, sunucu tarafından veri tabanı gibi ba?ka bir hizmete bir sure icin transfer edilebilip denetlenebilir. ?stemci, yeni bir duruma gecmek uzereyken istekler yollar. Bir veya birkac istek yerine getirilmemi?ken istemci
geci?
durumundadır (
?ng.
?ngilizce
:
to be in transition
). Her uygulama durumunun sunumu, bu istemci yeni bir durum geci?i ba?lataca?ı zaman tekrar kullanılabilecek ba?lantılar ihtiva eder.
[8]
World Wide Web'de istemciler ve aracılar, cevapları on belle?e alabilirler. Bu yuzden cevaplar, do?rudan veya dolaylı olarak kendilerini on belleklenebilir (
?ng.
?ngilizce
:
cacheable
) veya on belleklenemez olarak tanımlamalıdırlar. Boylece ba?ka isteklere cevaben istemcilerin bayat veya uygunsuz veri kullanımı onlenir. ?yi yonetilmi? on bellekleme (
?ng.
?ngilizce
:
caching
) ile bazı istemci?sunucu etkile?imlerini kısmen veya tamamen bertaraf edilir, boylece olceklenebilirlik ve performans daha da iyile?ir.
?stemci, genelde sondaki sunucuya veya yol boyunca bir aracıya ba?lı olup olmadı?ını soyleyemez. Aracı sunucular, yuk dengelemesi (
?ng.
?ngilizce
:
load balancing
) ve bolu?ulmu? on bellekler (
?ng.
?ngilizce
:
shared caches
) sa?layarak sistem olceklenebilirli?i geli?tirir. Bunun yanında guvenlik ilkelerini de guclendirirler.
Sunucular, gecici olarak istemcinin fonksiyonelli?ini icra edilebilir kod yollayarak geni?letebilir ya da ozelle?tirebilir (
?ng.
?ngilizce
:
extend or customize code
).
Java appletler
ve
JavaScript
gibi istemci tarafı betikler bunlardan sayılır. "Talep uzerine kod", REST mimarisinde iste?e ba?lı olan tek sınırlamadır.
Yeknesak arayuzu sınırlaması, her REST hizmeti icin bir temel te?kil eder.
[3]
eknesak arayuz, mimariyle sadele?tirip ayırır, boylece her taraf birbirinden ba?ımsız olarak geli?ebilir. Yeknesak arayuzunun dort 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 dondurulen sunumlarından (
?ng.
?ngilizce
:
representation
) farklıdırlar. Mesela sunucu, hicbirisi dahili sunumu olmamasına ra?men veri tabanından gelen veriyi
HTML
,
JSON
veya
XML
olarak gonderebilir.
- Bu temsiller yoluyla kaynakların manipulasyonu
- Bir istemci temsili kayna?ı ona ba?lı herhangi bir
metaveriyle
birlikte bulunduruyorsa bu kayna?ı de?i?tirmek veya silmek icin yeteri kadar bilgisi vardır.
- Kendinden acı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
) calı?tırılaca?ı bir
?nternet medya tipi
(
?ng.
?ngilizce
:
Internet media type
, eskiden
MIME tipi
(
?ngilizce
:
MIME type
) olarak bilinirdi) ile belirlenmi? olabilir.
[3]
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
icinde bulunan
hiper ba?larla
). Basit ba?lama noktalarının haricinde bir istemci, onceki temsillerle haber aldı?ının dı?ında herhangi bir kaynak icin herhangi bir eylemin mevcudiyetini kabul edemez.
- ^
"Techopedia'da REST tanımı"
. 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
ar?ivlendi
. 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.
- ^
"Fielding discusses the development of the REST style"
. Tech.groups.yahoo.com. 1 Eylul 2015 tarihinde
kayna?ından
ar?ivlendi
. Eri?im 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 ?ubat 2012 tarihinde kayna?ından
ar?ivlendi
, 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
ar?ivlendi
. Eri?im tarihi: 7 ?ubat 2013
.