REST ve RESTful arasındaki fark nedir


540

Bir REST sistemi ile RESTful olan bir sistem arasındaki fark nedir?

En çok okuduğum birkaç şeyden REST hizmetleri aslında RESTful hizmetleridir. Peki ikisi arasındaki fark nedir.


3
Sorunun nedeni, bağlantıdaki makaleyi okuyorsanız ve Dr Fielding'in çoğu REST uygulaması hakkında ne düşündüğüne bakarsanız, REST sistemleri değildir. RESTful davranışı sergilerler, ancak REST sistemleri olarak sınıflandırılamazlar.
AwkwardCoder

4
Makaleyi okudum ama onun anlamsal olarak işe yaramaz ayrımlara yol açtığını sanmıyorum.
JasonTrue

3
REST hakkındaki Wikipedia makalesi - en.wikipedia.org/wiki/Representational_State_Transfer - ikinci paragraf - "REST kısıtlamalarına uymak genellikle 'RESTful' olarak adlandırılır."
Nate

1
@PramodNikumbh bunu aşağıda doğru bir şekilde yanıtladı. "REST" sistemi, REST'in daha geniş bir tanımına uyan bir sistemdir. En azından bazı dinlenme ilkeleri sergiler. "Restful" çok daha REST uyumlu bir sistemi tanımlar.
Andrew Norman

Bence adında bir karışıklık var, RESTful'daki "ful" vatansız ve durum bilgisi karıştıracak ve bunlar iki farklı şey, REST ve RESTful kişisel görüşüme göre STATELESS olmalı. RESTles adlı durumsal bir REST düşünün. :)
Waheed

Yanıtlar:


487

Temsili durum aktarımı (REST) bir yazılım mimarisi stilidir. Roy Fielding tarafından yapılan bir tezde açıklandığı gibi, REST temelde Web'in mevcut teknolojisini ve protokollerini kullanan bir "mimari tarz" dır.

RESTful tipik olarak böyle bir mimariyi uygulayan web servislerini ifade etmek için kullanılır.


146
Peki REST mimari ve RESTful bir sıfat mı?
manei_cc

4
@manei_cc: Uygulamada bulacağınız şey, REST mimarisini takip etmeyen ve temelde REST benzeri, REST-wannabies vb. mimarisi, ancak Justin Ethier'in yazdığı gibi doğrudur: Web'in mevcut teknolojisini ve protokollerini kullanır .
Azder

7
RESTful, REST'e gerçekten saygı duyan API'lar için kullanılmalıdır. Yalnızca GET veya POST kullanan çok fazla "REST" web hizmeti gördüm. HTTP fiillerinin ve URL adlandırma kurallarının tam kullanımı üzerinde RESTful vurgu. Ama bu benim görüşüm.
Martin

1
architectNeyin? url'lerin? gibi https://translation.googleapis.com/language/translate/v2bu DİNLENME tarzıdır?
Asif Mushtaq


193

REST tabanlı hizmetler / mimari vs RESTFUL hizmetleri / mimari

Bunları ayırt etmek veya karşılaştırmak için REST'in ne olduğunu bilmelisiniz .

REST ( RE sunumu S tate T ransfer) temelde bazı ilkelere sahip mimari bir gelişim tarzıdır:

  • Vatansız olmalı

  • Sunucudan tüm kaynaklara yalnızca URI kullanarak erişmelidir

  • Dahili şifreleme yok

  • Oturumu yok

  • Yalnızca bir protokol kullanır - HTTP

  • CRUD işlemleri gerçekleştirmek için, böyle fiiller, HTTP kullanmalıdır olarak get, post, putvedelete

  • Sonucu yalnızca JSON veya XML, atom, OData vb. Şeklinde döndürmelidir (hafif veriler)

REST based services yukarıdaki ilkelerin bazılarını uygulayın, hepsini değil

RESTFUL services yukarıdaki tüm ilkeleri izlediği anlamına gelir.

Aşağıdakiler kavramına benzer:

Object-based languagestüm OOP kavramlarını destekler, örnekler : C ++, C #

Object oriented languagesbazı OOP özelliklerini destekler, örnekler : JavaScript, VB


Örnek :

ASP REST-BasedWEB NET MVC 4 ise Microsoft WEB API'sidir RESTFul.

MVC yukarıdaki REST ilkelerinden sadece bazılarını desteklerken WEB API yukarıdaki REST İlkelerinin tümünü destekler.

MVC yalnızca REST API'sinden aşağıdakileri destekler

  • URI kullanarak kaynağa erişebiliriz

  • Sunucudan kaynağa erişmek için HTTP fiilini destekler

  • Sonuçları JSON, XML, HTTPResponse biçiminde döndürebilir.

Ancak, aynı zamanda MVC'de

  • Oturumu kullanabiliriz

  • Bunu durumsal hale getirebiliriz

  • Temelde REST ilkelerini ihlal eden denetleyici eylem yönteminden video veya görüntü döndürebiliriz

MVC bu yüzden REST-BasedWEB API yukarıdaki tüm prensipleri desteklemektedir RESTFul.


10
Bunun neden reddedildiğini anlamıyorum, bu cevap soruya birçok açıklayıcı bilgi getiriyor.
Marcovecchio

5
şimdiye kadarki en iyi cevap
Limon

2
Bu en iyi cevap.
Mário Meyrelles

2
FTP'yi REST ile kullanabilirsiniz. lütfen bakınız: stackoverflow.com/questions/35534812/…
crazyTech

7
Yukarıdaki "Nesne tabanlı" ve "Nesneye Dayalı" kategorileri altındaki diller ters çevrilmiştir. Nesne Tabanlı diller tüm OOPS ilkelerini takip ederken, Nesne Tabanlı diller bazılarını takip eder.
Mrchief

119

"REST" mimari bir paradigmadır. "RESTful" bu paradigmayı kullanmayı açıklar.


architectNeyin? url'lerin? gibi https://translation.googleapis.com/language/translate/v2bu DİNLENME tarzıdır?
Asif Mushtaq

2
Bir REST mimarisi birçok özellik gerektirir. Yalnızca bir URL göstererek REST ilkelerine uygun bir şey söyleyemezsiniz.
SingleShot

42

Jason'ın yorumlarda söylediği gibi, RESTful sadece REST kısıtlamalarına saygı duyan bir şeyi tanımlayan bir sıfat olarak kullanılır.


29

REST, temsili durum aktarımı anlamına gelir. Bu, devletin kendisinin aktarılmadığı, yalnızca bunun bir temsili olduğu anlamına gelir. En yaygın örnek, saf bir HTML sunucusu tabanlı uygulama (javascript yok). Tarayıcı uygulamanın kendisi hakkında hiçbir şey bilmez, ancak bağlantılar ve kaynaklar aracılığıyla sunucu uygulamanın durumunu tarayıcıya aktarabilir. Bir düğmenin normal bir Windows uygulamasında durum değişkenini (ör. Sayfa açık) normal olarak değiştireceği durumlarda, tarayıcıda böyle bir durum değişikliğini temsil eden bir bağlantınız vardır.

Fikir hipermedya kullanmaktır. Ve belki de yeni hiper ortam türleri oluşturmak için. Potansiyel olarak tarayıcıyı javascript / AJAX ile genişletebilir ve yeni özel hiper ortam türleri oluşturabiliriz. Ve gerçek bir REST uygulamamız olacaktı.

Bu benim REST'in kısaltması olan kısa versiyonum, problemin uygulanması zor. Şahsen RESTful diyorum, REST ilkelerine atıfta bulunmak istediğimde ancak REST kavramını gerçekten uygulamadığımı biliyorum. Gerçekten SOAPful demiyoruz, çünkü ya SOAP kullanırsınız ya da kullanmazsınız. Çoğu insanın yaratıcısı Roy Fielding'in öngördüğü şekilde REST yapmadığını düşünüyorum, aslında RESTful veya RESTlike mimarileri uyguluyoruz. Tezini görebilirsiniz ve REST kısaltmasını bulacaksınız ancak RESTful kelimesini bulamazsınız.


23

REST, dağıtılmış yazılımlar için bir yazılım mimarisi tarzıdır

REST kısıtlamalarına uymak 'RESTful' olarak adlandırılır.

Bugün SOAP'a alternatif olarak web hizmetleri oluşturmak için çok kullanılıyor.

Burada kontrol etmek için bazı bağlantılar var

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/


13

cevaplar için teşekkürler. Bir RESTful web hizmetinin 4 temel özelliği olduğunu öne süren Alex Rodriguez'in bu makalesini okuyun :

  1. HTTP yöntemlerini açıkça kullanın.
  2. Vatansız olun.
  3. Dizin yapısı benzeri URI'ları ortaya çıkarın.
  4. XML, JavaScript Nesne Gösterimi (JSON) veya her ikisini aktarın.

Aslında 6 kısıtlaması vardır.
IronBlossom

2
@IronBlossom Cevap eksik iki ile güncellemek ister misiniz?
Paul Fleming

1
bağlantı
koptu

10

Temsili Durum Transferi (REST), World Wide Web gibi dağıtılmış hiper ortam sistemleri için bir yazılım mimarisi türüdür. Temsili Devlet Transferi terimi 2000 yılında Roy Fielding 1 [2] tarafından doktora tezinde tanıtıldı . Fielding, Köprü Metni Aktarım Protokolü (HTTP) belirtimi sürüm 1.0 ve 1.1'in ana yazarlarından biridir. REST kısıtlamalarına uymak 'RESTful' olarak adlandırılır. Kaynak: Vikipedi


8

Web hizmetleri, içeriği insanlar değil, bilgisayar programları tarafından tüketilen web siteleridir. REST, web hizmetlerinin HTTP ve diğer web standartlarını en üst düzeyde kullanması gerektiğini öngören bir dizi mimari ilkedir, böylece programlar zaten insanların web'den çıkabileceği tüm iyi şeyleri kazanır. REST genellikle SOAP web hizmetleri ve diğer "uzaktan yordam çağrısı" yönelimli web hizmetleriyle karşılaştırılır.

Stefan Tilkov'un Parleys.com'daki REST'teki sunumları oldukça iyi, özellikle de bu .

Bir kitap için Richardson ve Ruby'nin Restful Web Hizmetlerinden daha iyi olamazsınız .


Yani normal bir web sitesi bir REST uygulaması olarak kabul edilebilir?
yoyo_fun

1
@yoyo_fun: Evet, RESTfully düzenli bir web sitesi de oluşturulabilir. Sunucunun bir insana HTML veya bir programa JSON (diyelim) döndürüp döndürmediği soyutlama düzeyinde önemsizdir.
Jim Ferrans


4

Richardson Olgunluk Modelinde 4 seviye API tanımlanmıştır. Bunlar şu şekilde tanımlanır:

  • seviye 0: tüm API'leri için tek bir uç noktaya sahip herhangi bir sistem (SOAP veya RPC bu kategoriye girer). Seviye 0 apis ayrıca "komutlara" benzeyebilir.

  • seviye 1: ResourceUri tarafından tarif edilen bir sistem. Bu, birden çok varlık tabanlı URI'yi tanımlayan bir sistemdir (seviye 0 sistemleri gibi tek bir uç noktaya sahip olmak yerine). Bu URI'ler, bu kaynağa karşı farklı eylemler uygulamak için farklı http eylemleri (POST, GET, PUT vb.) Kullanabilir.

  • seviye 2: diğer bir deyişle Standart HTTP yöntemlerinin / fiillerinin ve çoklu durum kodu yanıtlarının uyumlu kullanımı ile seviye 1

  • seviye 3: aka seviye 2 artı HATEOAS (yanıta yapabileceğiniz ek çağrıları açıklayan hiper ortam)

Seviye 1, seviye 2 ve seviye 3 REST sistemleri olarak kabul edilebilirken, sadece daha katı seviyeler (yani seviye 2 ve seviye 3) RESTful olarak kabul edilir.

Yani aslında tüm RESTful apisleri REST apis'tir, ancak tüm REST apisleri RESTful değildir

Richardson Olgunluk Modeli nedir?


2

REST'i mimari bir "sınıf" olarak düşünürken RESTful bu sınıfın iyi bilinen "örneğidir".

Lütfen ""; burada "gerçek" programlama nesneleri ile uğraşmıyoruz.


1

Bir "REST hizmeti" ve "RESTful hizmeti" bir ve aynıdır.

RESTful sistemi, RESTful ağa bağlı uygulamalar fikrini oluşturan orijinal belgede tanımlanan REST kurallarını izleyen herhangi bir sistemdir .

Değişen RESTfulness seviyeleri olduğunu belirtmek gerekir. Genel olarak, REST bir stil değil, bir standarttır, bu nedenle ihtiyaçlara göre yorumlama için yer vardır. bir örnek hiyerarşik kaynak URL'lerdir (ör. /things/ID/relatedthings) düz URL'lere (ör. /things/IDve /relatedthings?thing=ID)


1

REST (Representation State Transfer), Web Hizmetlerinin oluşturulduğu bir mimaridir.

ve

RESTful, REST mimarilerini kullanarak hizmet yazmanın bir yoludur. RESTful hizmetleri, müşterilerle etkileşime girecek hedefleri belirlemek için kaynakları ortaya koyar.


0

REST, web hizmetleri oluşturmak için mimari bir modeldir. RESTful hizmeti bu modeli uygulayan hizmettir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.