REST olmayan HTTP yerine REST kullanmanın avantajı nedir?


Yanıtlar:


162

Ben kimse gerçekten DİNLENME ne kabul eder kısmen, bu iyi bir cevap almak sanmıyorum olduğunu . Wikipedia sayfası kodlardan ağır ve açıklamalar konusunda hafiftir. Tartışma sayfası, insanların bu konuda ne kadar katılmadıklarını görmek için bir bakıma değer. Ancak söyleyebildiğim kadarıyla REST şu anlama gelir:

Bunun yerine rastgele adlandırılmış ayarlayıcı ve alıcı URL'ler sahip ve kullanmanın GETtüm alıcılar ve POSTayarlayıcılar herkes için, biz URL'lerin kaynakları belirlemek için deneyin ve ardından HTTP işlemleri kullandığınızda GET, POST, PUTve DELETEonlara bir şeyler yapmak. Yani yerine

GET /get_article?id=1
POST /delete_article   id=1

Yapardın

GET /articles/1/
DELETE /articles/1/

Ve sonra POSTve PUTdenk gelen "yaratmak" ve "güncelleme" operasyonları (ama kimse hangi yolu yuvarlak kabul eder) için.

Ben sorgu dizeleri nedeniyle önbelleğe alma argümanlar yanlış olduğunu düşünüyorum edilir genellikle önbelleğe, ve gerçekten gerek yoktur yanında bunları kullanmak. Örneğin, django böyle bir şeyi çok kolaylaştırır ve REST olduğunu söyleyemem:

GET /get_article/1/
POST /delete_article/     id=1

Ya da sadece fiili URL'ye ekleyin:

GET /read/article/1/
POST /delete/article/1/
POST /update/article/1/
POST /create/article/

Bu durumda GETyan etkileri olmayan bir POSTşey ve sunucudaki verileri değiştiren bir şey anlamına gelir. Sana bütün önleyebilirsiniz, özellikle de bu belki de biraz daha net ve daha kolay olduğunu düşünüyorum PUTrakip olduğunu- POSTşey. Ayrıca, isterseniz daha fazla fiil ekleyebilirsiniz, böylece HTTP'nin sunduklarına yapay olarak bağlı değilsiniz. Örneğin:

POST /hide/article/1/
POST /show/article/1/

(Ya da her neyse, örnekleri olana kadar düşünmek zor!)

Sonuç olarak, görebildiğim sadece iki avantaj var:

  1. Web API'niz daha temiz ve anlaşılması / keşfedilmesi daha kolay olabilir.
  2. Verileri bir web sitesi ile senkronize ederken, REST'i kullanmak muhtemelen daha kolaydır, çünkü sadece söyleyebilirsin synchronize("/articles/1/")ya da her neyse. Bu büyük ölçüde kodunuza bağlıdır.

Ancak bazı oldukça büyük dezavantajlar olduğunu düşünüyorum:

  1. Tüm eylemler kolayca CRUD ile eşleşmez (oluşturma, okuma / alma, güncelleme, silme). Nesne türü kaynaklarla bile ilgilenmiyor olabilirsiniz.
  2. Şüpheli faydalar için ekstra çaba.
  3. Hangi yöne PUTve hangi yöne doğru karışıklık POST. İngilizce de benzer şeyleri kastediyorlar ("Duvara bir bildirim koyacağım / yayınlayacağım.").

Sonuç olarak şunu söyleyebilirim: Ekstra çabaya gerçekten gitmek istemiyorsanız veya hizmetiniz CRUD işlemleriyle gerçekten iyi eşleşmediyse, API'nizin ikinci sürümü için REST'i kaydedin.


REST ile başka bir sorunla karşılaştım: Bir istekte birden fazla şey yapmak veya bileşik nesnenin hangi bölümlerini almak istediğinizi belirtmek kolay değil. Bu, gidiş-dönüş süresinin önemli olabileceği ve bağlantıların güvenilir olmadığı mobil cihazlarda özellikle önemlidir. Örneğin, bir facebook zaman çizelgesinde yayınlar aldığınızı varsayalım. "Saf" REST yolu şöyle bir şey olurdu

GET /timeline_posts     // Returns a list of post IDs.
GET /timeline_posts/1/  // Returns a list of message IDs in the post.
GET /timeline_posts/2/
GET /timeline_posts/3/
GET /message/10/
GET /message/11/
....

Bu biraz saçma. Facebook'un API'sı oldukça harika bir IMO, bu yüzden ne yaptıklarına bakalım:

Varsayılan olarak, sorgu yaptığınızda çoğu nesne özelliği döndürülür. "Alanlar" sorgu parametresi ile döndürülmesini istediğiniz alanları (veya bağlantıları) seçebilirsiniz. Örneğin, bu URL yalnızca Ben'in kimliğini, adını ve resmini döndürür: https://graph.facebook.com/bgolub?fields=id,name,picture

REST ile böyle bir şeyi nasıl yapacağınız hakkında hiçbir fikrim yok ve eğer hala REST olarak sayılıp sayılmayacağını biliyorsunuz. Kesinlikle bunu yapmamanız gerektiğini söylemeye çalışan herkesi görmezden gelirim (özellikle sebebi "REST olmadığı için" ise)!


4
POST ve PUT, HTTP RFC'ye göre kullanılmak içindir. Bu durumda, PUT, belirli bir konumda bir şey oluşturmak / güncellemek anlamına gelir - gerçekleşen, bir şeyin zaten URI'de olup olmadığına (ve aynı zamanda idempotent) bağlıdır; gönderir - ve sonra size URI döndürür (bu nedenle yalnızca oluşturma). Gerçekten bilgisayar hakkında bir şey söz ederken tamamen DELETE kullanmak için değil, İngilizce hakkında şikayet edemezsiniz. Düzenlemenizde gündeme getirilen konu ile ilgili ne yapacağımı merak ediyorum: P
Nan L

7
Facebook API örneği bana REST gibi görünüyor (aslında URL'lerde fiil kullanan örnekleriniz çok daha fazla). Sorgu parametrelerinin RESTful olmasının bir nedeni yoktur, verilerin hiyerarşide düzenlenebileceği yolları kullanmak iyi bir uygulamadır.
Justin Emery

5
Sorgu dizeleri, içindeki kaynaklara başvurmadığınız sürece mükemmel RESTful'dir. Onları daha çok, son noktanın davranışını değiştirebilecek filtreler gibi düşünmeye eğilimliyim.
Sinaesthetic

3
-1, REST çok özel bir şeydir - Roy Fielding tarafından icat ettiğinde açıklandığı gibi. Bu cevaba bakınız . özellikle: "İstemcinin yalnızca ilk URI'yi bilmesi gerekir ve daha sonra, gezinmek veya eylemler gerçekleştirmek için sunucu tarafından sağlanan seçimler arasından seçim yapar." . Temel olarak, API belgelerinin uç noktalarının herhangi bir kısmı, örneğin "bir kullanıcı kimliği verildiğinde, kullanıcı bilgisini alabilirsiniz /user/{id}, o zaman bu kadar rahat değildir." sayfa
Claudiu

1
(devam ediyor ...) Diğer insanların terimi kötüye kullanması ne olduğunu değiştirmiyor. Yine de: Hala sadece REST'in ne olduğunu öğreniyorum ve bu son zamanlarda benim için tıkladı.
Claudiu

47

Basitçe söylemek gerekirse, REST, HTTP'yi olması gerektiği gibi kullanmak anlamına gelir.

Roy Fielding'in REST hakkındaki tezine bir göz atın . Web geliştirme yapan herkesin okuması gerektiğini düşünüyorum.

Not olarak, Roy Fielding, HTTP protokolünün arkasındaki anahtar sürücülerden biridir.

Bazı avantajları adlandırmak için:

  • Basit.
  • Yüksek yükü ele almanıza yardımcı olmak için HTTP önbelleğini ve proxy sunucusunu iyi kullanabilirsiniz.
  • Çok karmaşık bir uygulamayı bile basit kaynaklarda düzenlemenize yardımcı olur.
  • Özel olarak onlar için tasarlamamış olsanız bile, yeni müşterilerin uygulamanızı kullanmasını kolaylaştırır (muhtemelen, uygulamanızı oluştururken etrafta olmadılar).

11
"Basit": REST neden HTTP'den daha basit?
Dimitri C.

5
"organize olmanıza yardımcı olur": Yani bu organizasyon sadece GET ve POST kullanırken daha mı zor?
Dimitri C.

1
"Yeni istemcilerin uygulamanızı kullanmasını kolaylaştırır": Bu REST ve düz HTTP ile ilgili, değil mi?
Dimitri C.

23
REST kısıtlamalarına uymak kesinlikle basit değildir. Karmaşık iş operasyonlarını dört standart fiile sıkıştırmak bazen gerçekten zordur. Bununla birlikte, iyi yapıldığında, nihai sonucu anlamak basit olabilir, ancak oradan başka bir şey elde etmek.
Darrel Miller

6
@Dimitri: "Basit" çünkü çalışmak için basit bir çerçeve sunuyor. DİNLENME olduğunu HTTP! SOAP'tan (adında bile basit olan) çok daha basit. "organize etmenize yardımcı olur" - kavramın anlaşılması çok zor değildir ve doğru şekilde uygulandığında işleri çok iyi hale getirir. REST, bir uygulama detayı yerine uygulamayı tasarlamanın bir yolu olabilir. Darrel'in uygulamaya dikkat çektiği gibi kolay olmayabilir, ancak sonuç tatmin edici. "Bu kolay yeni müşteriler için uygulamayı kullanmak için yapar" - Tekrar: DİNLENME olduğunu HTTP.
Emil Ivanov

31

Basitçe söylemek gerekirse: HİÇBİRİ .

Oy vermekten çekinmeyin, ancak yine de REST olmayan HTTP'ye göre gerçek bir faydası olmadığını düşünüyorum. Mevcut tüm cevaplar geçersiz. Şu anda en çok oylanan cevaptan gelen argümanlar:

  • Basit.
  • Yüksek yükü ele almanıza yardımcı olmak için HTTP önbelleğini ve proxy sunucusunu iyi kullanabilirsiniz.
  • Çok karmaşık bir uygulamayı bile basit kaynaklarda düzenlemenize yardımcı olur.
  • Özel olarak onlar için tasarlamamış olsanız bile, yeni müşterilerin uygulamanızı kullanmasını kolaylaştırır (muhtemelen, uygulamanızı oluştururken etrafta olmadılar).

1. Basit

REST ile sunucu tarafı ve istemci tarafı komut dosyalarınız için ek iletişim katmanına ihtiyacınız vardır => aslında REST olmayan HTTP kullanmaktan daha karmaşıktır.

2. Önbellekleme

Önbellekleme, sunucu tarafından gönderilen HTTP üstbilgileri tarafından denetlenebilir. REST, REST olmayan öğelerde eksik olan hiçbir özellik eklemez.

3. Organizasyon

REST, bir şeyler düzenlemenize yardımcı olmaz . Bu zorlar kullandığınız sunucu tarafı kütüphanesi tarafından desteklenen API kullanmak için. REST dışı yaklaşımı kullanırken uygulamanızı aynı şekilde (veya daha iyi) düzenleyebilirsiniz. Örneğin bkz. Model-View-Controller veya MVC yönlendirmesi .

4. kullanımı kolay / uygulamak

Hiç doğru değil. Her şey başvurunuzu ne kadar iyi organize ettiğinize ve belgelediğinize bağlıdır. REST, uygulamanızı sihirli bir şekilde daha iyi hale getirmeyecektir.


3
genellikle dinlenme apislerinin önbelleğe alınması daha kolaydır, çünkü verileri aynı yaşam döngüsüne sahip kaynaklara ayırırsınız (aynı anda oluşturulur ve güncellenir), böylece büstü güvenilir bir şekilde önbelleğe alabilir ve önbelleğe alabilirsiniz - rest-apis olmayanlar genellikle yoğun bir şekilde işlendikten sonra veya birden fazla varlığın bir araya gelmesini önbelleğe almayı zorlaştırıyor
Scott Schulthess

2
karşılıklı olarak özel olmadığını doğrulayın (önbelleğe alınabilen dinlenmeyen bir api'ye sahip olabilirsiniz), ancak api tasarımına dinlenme yaklaşımı almak teşvik eder ve pratikte çeşitli en iyi uygulamaları (keşfedilebilirlik, jenerik arayüzler, cachability, akıllı kaynak modelleme) teşvik ettiği için kesinlikle önemlidir. )
Scott Schulthess

4
"REST, işleri düzenlemenize yardımcı olmaz. Sizi, kullandığınız sunucu tarafı kitaplığı tarafından desteklenen API'yi kullanmaya zorlar." Bununla ne demek istediğinden emin değilim. Ekstra sunucu tarafı çerçeve kullanmadan RESTful API oluşturmak tamamen mümkündür (ve artık REST olmayan bir API oluşturmaktan daha zor değildir).
Michael O.

2
"REST ile ek iletişim katmanına ihtiyacınız var" - humbug, mevcut HTTP kütüphanenizi gayet iyi kullanabilirsiniz.
Søren Boisen

1
@ SørenBoisen Bu cevap biraz eski. Muhtemelen güncel durumları daha fazla yansıtacak şekilde güncellemeliyim.
Petr Peller

23

IMHO, REST'in sağladığı en büyük avantaj, istemci / sunucu bağlantılarını azaltmaktır. Mevcut istemcileri bozmadan bir REST arayüzünü zaman içinde geliştirmek çok daha kolaydır.


4
Bir örnek verebilir misiniz? Teşekkürler!
Jan Żankowski

3
Bu, REST olmayan API'nizin ne kadar soyutlandığına bağlı olmaz mı?
johnny

@johnny Mümkün ama mümkün değil. REST'in kısıtlamaları, bileşenlerin bağımsız evrimini açıkça sağlamak üzere seçilmiştir. Aynı kısıtlamaları uygulamadan bunu daha iyi yapmanın bir yolunu bulduysanız, eminim birçok insan bunu duymak ister.
Darrel Miller

@DarrelMiller Lütfen REST'in istemci / sunucu bağlantılarını REST Olmayan http yaklaşımından daha iyi nasıl azaltabileceğini ayrıntılı olarak açıklayabilir misiniz? Timmmm'in cevabında söylediği noktaya işaret ettiğine inanıyorum. Timmmm cevabı
emilly

@emilly REST sistemleri, yanıtı işleyebilmek için bant dışı bilgilere güvenmez. Belirli bir talepten geri dönebilecek şeyler hakkında yapılması gereken herhangi bir varsayım yoktur. Yanıt, bilmeniz gereken her şeyi size söyler. Bu, sunucunun davranışını değiştirmesini sağlar ve istemci bu değişikliklerin farkında olabilir.
Darrel Miller

15

keşfedilebilirlik

Her kaynağın, hiyerarşi veya bağlantılardaki diğer kaynaklara referansları vardır, bu nedenle etrafta gezinmek kolaydır. Bu, müşteriyi geliştiren, dokümanlara sürekli danışmaktan kaçınan ve öneriler sunan bir avantajdır. Ayrıca, sunucunun kaynak adlarını tek taraflı olarak değiştirebileceği anlamına gelir (istemci yazılımı URL'leri kodlamadığı sürece).

Diğer araçlarla uyumluluk

API'nın herhangi bir bölümüne girebilir veya kaynaklarda gezinmek için web tarayıcısını kullanabilirsiniz. Hata ayıklama ve test entegrasyonunu kolaylaştırır.

Standartlaştırılmış Fiil İsimleri

Doğru ifadeyi avlamak zorunda kalmadan eylemleri belirtmenizi sağlar. OOP Alıcılar ve ayarlayıcılar standardize edilmemiştir ve bazı insanlar kullanılan düşünün retrieveve defineonun yerine. Her bir erişim noktası için doğru fiili ezberlemeniz gerekir. Bu sorunu sadece bir avuç fiil kullanılabilir sayaçları bilmek.

Standart Durum

Eğer GETvar olmayan bir kaynak, bir olsun emin olabilir 404dinlendirici API hatası. {error: "Not found"}Tanrı'ya sarılmış geri dönebilecek RESTful olmayan bir API ile kontrast kaç katman bilir. Diğer taraftaki geliştiriciye bir mesaj yazmak için fazladan alana ihtiyacınız varsa, her zaman yanıtın gövdesini kullanabilirsiniz.

Misal

Biri REST'i takip eden ve diğeri takip etmeyen aynı işlevselliğe sahip iki API düşünün. Şimdi bu API'lar için aşağıdaki istemcileri düşünün:

RESTful:

GET /products/1052/reviews
POST /products/1052/reviews       "5 stars"
DELETE /products/1052/reviews/10
GET /products/1052/reviews/10

HTTP:

GET /reviews?product_id=1052
POST /post_review?product_id=1052                  "5 stars"
POST /remove_review?product_id=1052&review_id=10
GET /reviews?product_id=1052&review=10

Şimdi aşağıdaki soruları düşünün:

  • Her müşterinin ilk çağrısı çalıştıysa, geri kalanının da işe yarayacağından nasıl emin olabilirsiniz?

  • API'da bu erişim noktalarını değiştirmiş veya değiştirmemiş olabilecek büyük bir güncelleme yapıldı. Ne kadar dokümanı yeniden okumak zorunda kalacaksınız?

  • Son sorgunun dönüşünü tahmin edebilir misiniz?

  • Gönderilen incelemeyi düzenlemeniz gerekir (silmeden önce). Belgeleri kontrol etmeden yapabilir misiniz?


Bunun kapsamlı bir liste olması gerekmiyor ve sadece çok pratik avantajlar içeriyor.
BoppreH

Bu çok akıllı bir cevap, alkışlıyorum.
EralpB

10

Ryan Tomayko'nun Eşime REST'i Nasıl Anlattığına Bir Bakış

Üçüncü taraf düzenleme

Waybackmaschine bağlantısından alıntı:

Nasıl bir örnek. Siz bir öğretmensiniz ve öğrencileri yönetmek istiyorsunuz:

  • hangi sınıflardalar,
  • hangi notları alıyorlar,
  • Acil durum kontakları,
  • öğrettiğiniz kitaplar hakkında bilgi vb.

Sistemler web tabanlı ise, o zaman muhtemelen burada yer alan isimlerin her biri için bir URL vardır: student, teacher, class, book, room, etc. ... Her URL için makine tarafından okunabilir bir sunum olsaydı, sisteme yeni araçların takılması önemsiz olurdu, çünkü tüm bu bilgiler standart bir şekilde tüketilebilirdi. ... sınav puanlarını toplamak için her bir okul sistemi ile konuşabilen ülke çapında bir sistem oluşturabilirsiniz.

Sistemlerin her biri basit bir HTTP GET kullanarak birbirlerinden bilgi alacaktır. Bir sistemin başka bir sisteme bir şey eklemesi gerekiyorsa, HTTP POST kullanır. Bir sistem başka bir sistemdeki bir şeyi güncellemek istiyorsa, bir HTTP PUT kullanır. Anlaşılması gereken tek şey verinin nasıl görünmesi gerektiğidir.


6
Karısı: Bu başka bir robot şey mi?
Tobu

4
Bu güzel bir metindir, ancak her şey için GET ve POST'u kullanmanın neden kötü olduğuna dair herhangi bir örnek vermedi.
Dimitri C.

9
Bu yüzden neden daha iyi olduğunu keşfetmeye çalışıyorum :-)
Dimitri C.

7
Yazı kaldırıldı.
surfen


5

Bu soruya cevap arayan herkese bu "slayt gösterisinden" geçmelerini öneririm .

REST'in ne olduğunu ve neden bu kadar havalı olduğunu, artılarını ve eksilerini, SABUN'dan farklılıkları anlayamadım - ama bu slayt gösterisi çok parlak ve kolay anlaşıldı, bu yüzden şimdi benim için öncekinden çok daha açık.


3

Önbelleğe almak.

Gevşek bağlantı ve hipermetin yoluyla evrimleşme yeteneği etrafında dönen REST'in daha ayrıntılı faydaları vardır, ancak önbelleğe alma mekanizmaları RESTful HTTP'yi önemsemenizin ana nedenidir.


3
Nelerin önbelleğe alınabileceğini ve önbelleğe almanın REST olmayan bir çözümle neden olmayacağını gösteren bir örnek verebilir misiniz?
Dimitri C.

2
@Dimitri C .: URL'ye iletilen parametreleri yok saydığı için wikipedia.org/article?id=19 bağlantısı bir proxy tarafından önbelleğe alınmaz . Öte yandan bir bağlantı wikipedia.org/REST önbelleğe alınır, anlaşılır mı?
VP.

6
Önbellekleme REST'in ana yararı olsaydı, son iki yılı RESTful hizmetleri oluşturmak için harcamadığımı garanti edebilirim.
Darrel Miller

Darrel, gevşek bağlantının en önemli olduğu bir dağıtım ölçeğinde sistemler inşa ediyor olabilirsiniz (bunların ne tür sistemlerin olduğunu bilmek ister), ancak çoğu insan değildir - veya teknolojiyi kullanırlar (ör. tarayıcılar ve html).
Mike

1
Öyleyse neden sadece kullanmıyorsunuz GET /get_article/19/ve POST /update_articleönbelleğe almanız endişenizse. Hala sadece ile her şeyi yapabilirsiniz GETve POSTve inanıyorum REST"Kullanım araçları GET, POST, PUTve DELETEsadece." yalnızca "Sorgu dizeleri kullanma" değil. yani önerdiğim şey olmazdı REST. Sonra tekrar, kimse gerçekten ne REST olduğunu kabul edemez bu yüzden "Web 2.0" ile bir kova koymak.
Timmmm

3

Fielding tezinde yazılmıştır . Ama çok okumak istemiyorsanız:

  • artan ölçeklenebilirlik (durum bilgisi olmayan, önbellek ve katmanlı sistem kısıtlamaları nedeniyle)
  • ayrıştırılmış istemci ve sunucu (durum bilgisi olmayan ve tek tip arabirim kısıtlamaları nedeniyle)
    • yeniden kullanılabilir istemciler (istemci hangi bağlantıyı izleyeceğinize ve sonuçların nasıl görüntüleneceğine karar vermek için genel REST tarayıcılarını ve RDF semantiğini kullanabilir)
    • kırılmayan istemciler (istemciler, yalnızca API'ya özgü bazı bilgiler yerine anlambilim kullandıkları için yalnızca uygulamaya özgü anlambilim değişiklikleri nedeniyle kırılır)

0
  • Her "kaynağa" bir kimlik verin
  • Bir şeyleri birbirine bağlayın
  • Standart yöntemler kullanın
  • Birden çok temsili olan kaynaklar
  • Vatansız iletişim kurun

Her şeyi sadece POST ve GET ile yapmak mümkün mü? Evet, en iyi yaklaşım bu mu? Hayır neden? çünkü standart yöntemlerimiz var. Tekrar düşünürseniz, sadece GET'i kullanarak her şeyi yapmak mümkün olabilir .. Öyleyse neden POST'u kullanmaktan rahatsız olmalıyız? Standartlar yüzünden!

Örneğin, bugün bir MVC modeli düşünerek, başvurunuzu yalnızca POST, GET, PUT ve DELETE gibi belirli fiillere yanıt verecek şekilde sınırlayabilirsiniz. Kaputun altında her şey POST ve GET'e benzetilse bile, farklı eylemler için farklı fiillere sahip olmak mantıklı değil mi?


1
"GET kullanarak her şeyi yapmak mümkün olurdu": Silverlight'ta HTTP GET ile zaten bazı denemeler yaptım. Sonuç olarak, GET mesajlarının boyutu oldukça sınırlıyken, POST mesajları daha büyük olabilir (yine: Silverlight ayarında). Bu nedenle her şey için HTTP POST kullanmayı tercih ederim! :-)
Dimitri C.

her iki çözüm de standartlara aykırıdır. POST aracılığıyla her şeyi yapmak, özellikle sorgular için iyi değil. Son yıllarda GET olarak çalışan tüm arama motorlarının artık GET olarak çalıştığını unutmayın. Neden? çünkü “get” yöntemi örümcekleşmek için bu yeteneğe sahiptir ...
VP.

0

REST'te keşif çok daha kolay. Hizmetinizi dünyaya tanıtmanıza yardımcı olacak WADL belgelerine (geleneksel web hizmetlerindeki WSDL'ye benzer) sahibiz. UDDI keşiflerini de kullanabilirsiniz. Geleneksel HTTP POST ve GET kullanıcıları, sizi aramak için mesaj isteğinizi ve yanıt şemalarınızı bilmeyebilir.


1
Bir RADful web hizmetini bir WADL belgesi ile tanımlamak, REST'in başlıca avantajlarından birini, özellikle de hiper ortamdan kazanılan tüm avantajları yener.
Thomas Eizinger

@ThomasEizinger WADL gerçekten böyle kötü bir şey mi? Şu anda üstte bir WADL sağlamayan başka bir şirketle çalışıyoruz, isteğimizin içeriğine bağlı olarak json nesneleri döndürüyor. WADL'nin düşüncelerin netleştirilmesinde yardımcı olacağını düşünüyorum.
surfmuggle

WADL, bir HTTP API'sını tanımlamak için harika bir iş çıkarır, çünkü bunun için tasarlanmıştır. Bu şirketin sağladığı hizmete bağlı olarak, bir WADL iyi bir fikir olabilir veya olmayabilir. Hizmet hiper ortamdan yararlanmıyorsa ve sadece bazı nesneleri JSON'a serileştiriyorsa, hizmetlerinin nasıl çalıştığı ve ne beklediği / döndüğü hakkında bir belge (WADL, Swagger, vb.) Sağlamalıdır. WADL kendi başına hiç de fena değil, sadece (gerçekten) RESTful bir web hizmeti için doğru araç değil.
Thomas Eizinger

0

Bir avantajı, XML belgelerini ve InputStream nesnesi, URL, DOM düğümü gibi farklı kaynaklardan sıradan XML verilerini sıralı olarak işleyebilmemizdir ...


0

@Timmmm, düzenlemeniz hakkında:

GET /timeline_posts     // could return the N first posts, with links to fetch the next/previous N posts

Bu, çağrı sayısını önemli ölçüde azaltacaktır

Ve hiçbir şey müşterilerinizin isteyebileceği alan değerlerini belirtmek için HTTP parametrelerini kabul eden bir sunucu tasarlamanızı engellemez ...

Ama bu bir detay.

Daha da önemlisi, REST mimari tarzının büyük avantajlarından bahsetmemenizdir (sunucu vatansızlığı nedeniyle çok daha iyi ölçeklenebilirlik; sunucu vatansızlığı nedeniyle çok daha iyi kullanılabilirlik; önbellekleme gibi standart hizmetlerin çok daha iyi kullanımı örneğin, bir REST mimari stili kullanılırken, tek tip bir arayüz kullanımı nedeniyle istemci ve sunucu arasında çok daha düşük bağlantı; vb.)

Yorumuna gelince

"Tüm eylemler kolayca CRUD ile eşleşmez (oluşturma, okuma / alma, güncelleme, silme)."

: RDBMS de bir CRUD yaklaşımı kullanır (SELECT / INSERT / DELETE / UPDATE) ve her zaman bir veri modelini temsil etmenin ve bu model üzerinde işlem yapmanın bir yolu vardır.

Cümle ile ilgili

"Nesne türü kaynaklarla ilgilenmiyor olabilirsiniz"

: RESTful tasarımı özünde basit bir tasarımdır - ancak bu tasarımın basit olduğu anlamına gelmez. Farkı görüyor musunuz? Bunu kaynaklarla temsil etmek için, uygulamanızın temsil edeceği ve ele alacağı kavramlar hakkında çok düşünmeniz gerekir, eğer tercih ederseniz, ne yapması gerekir. Ancak bunu yaparsanız, daha basit ve verimli bir tasarım elde edersiniz.


-1

Sorgu dizeleri arama motorları tarafından yok sayılabilir.


8
Sorgu dizesi kullanmak tamamen RESTful.
Emil Ivanov

Dimitri, bazı arama motorları dinamik bağlantıları görmezden geliyor. Artık o kadar da değil, ama yine de kaşlarını çattı. Küçük bir site çalıştırırsanız, yolda bir soru işareti varsa googlebot tüm sayfalarınızı dizine eklemeyebilir.
wisty

3
... Bahsettiğiniz zaman, Google sadece açıkça yanlıştır: googlewebmastercentral.blogspot.com/2008/09/...
Boldewyn

Sorgu dizeleri için -1 arama motorları tarafından yoksayılmaz. webmasters.googleblog.com/2008/09/…
bronz adam
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.