RESTful tasarımı tüm bir web sitesine mi uyguluyorsunuz?


11

Tüm bunlar çok yeni gelebilir, ancak başımı iyice RESTful olan bir web sitesi tasarlamak için sarmaya çalışıyorum. Kullanıcılar, Fotoğraflar, Blog Yazıları, vb. Gibi şeylere RESTful tasarımı uygulamayı anlıyorum çünkü onları "nesneler" gibi düşünüyorum.

Ancak, "hakkımızda" sayfası ne olacak? Ne tür bir kaynak bu? Kelimenin RESTful anlamında bir kaynak mı? Ayrıca, "http://www.example.com/" URL'sine gittiğimi, hangi kaynağı istediğimi varsayalım? Endeks kaynağı?


Bazı açıklamalara ihtiyaç olduğunu düşünüyorum. Son hedefin nedir. Dinlendirici bir tasarıma ihtiyaç nedir. denklemin dışında dinlenerek ne tatmin etmeye çalışıyorsunuz?
Jonathan Kaufman

1
Nihai hedef tam bir web sitesidir. Bir web sitesini dinlendirici bir tasarım etrafında yapılandırmak, web'in çalışma şekline göre anlamlı görünmektedir. Hakkında veya iletişim sayfası gibi kaynak gibi görünmeyen şeylere bu tür tasarımların nasıl uygulanacağından emin değilim.
TaylorOtwell

Yanıtlar:


6

Gördüğüm en yaygın RESTful web sitesi kaynak deseni URI'ye bir görünüm eklemektir :

/ resourcetype / tanımlayıcı [/ view ] [/ page] [? filterparams]

Görünüm olmadığında, yalnızca varsayılan bir görünüm sunarsınız. Senin durumunda:

  • / - bir istek , üst düzey kaynak için varsayılan görünümüexample.com döndürür - web siteniz.
  • / aboutus - en üst düzey kaynağın "Hakkımızda" görünümü. Veya alternatif olarak, üst düzey CMS kapsamındaki bir kaynak için aboutusadlandırılmış bir tanımlayıcı olabilir . *
  • / müşteriler / 1 / aboutus - bu istek, müşteri 1'in kapsamına giren "Hakkımızda" görünümünü gösterir .

Bununla birlikte, bazen daha iyi anlambilim için biraz şekerleme yapmak en iyisidir. Örneğin, StackOverflow sorular için RESTful / sorular / [id] 'i kullanır , ancak Soru Sor sayfası çok RESTful olmayan ( bir kaynak değildir ) ancak yalnızca fani kullanmak için çok mantıklı olan / sorular / sorundur .askquestions


* En üst düzeydeki CMS'lerde, kaynak türü her zaman olmasa da, çoğu zaman gereksiz olduğu için kaldırılır.


10

RESTful tasarımının, web'in eşit olarak programlanabileceği bir standart sağlamayı amaçladığını unutmayın. İnsanlara yönelik tüm web sitenizi saf REST anlambilimine dönüştürmek her zaman uygun veya yararlı değildir.

Kaynaklarınız olduğunda, bunların temsillerini dikkate almak yararlıdır. Statelessnes gibi REST'in diğer tasarım ilkelerini ve web sitenizin performansını ve kullanılabilirliğini nasıl etkilediğini de dikkate almak önemlidir. Ancak REST'in bir amaç değil, bir araç olduğunu unutmayın. Bu bir araç, bir amaç değil.

Kullanım dinlendirici semantik nerede kullanışlı , amaçlarını ve yararlarını, anlamak ve site mükemmel RESTful değilse öyle deme sonra. Herhangi bir olayda önemsiz olmayan herhangi bir site için neredeyse imkansız olurdu.

TL; DR : REST bir araçtır. Yararlı olduğu zaman ve yerde kullanın, ancak buna bağlı kalmayın.


2
+1 Dinlenecek URLS'den fazlası var.
Josh Noe

Ajax, REST ve REST sitenize harici bağlantı kabus olabilir. Cevabınız için teşekkür ederim.
johnny

4

Peki, "hakkımızda" sayfası [?] Ne tür bir kaynak bu?

Kompleks. Bileşenleri, parçaları veya yapısı olan bir kaynakta yanlış bir şey yok.

Kaynaklar "ilişkisel veritabanı satırları" veya diğer atomik şeyler değildir. Bunlar kaynak.

Bir kaynağın daha büyük ve daha yapılandırılmış olabilmesi nedeniyle, belge odaklı veritabanları bunu daha zarif bir şekilde ele alır.

Kelimenin RESTful anlamında bir kaynak mı?

Evet.

Ayrıca, "http://www.example.com/" URL'sine gittiğimi, hangi kaynağı istediğimi varsayalım?

Hayır.

"Aboutus" kaynağını istiyorsunuz. Bir kaynağın singleton olması mümkündür (ama tuhaftır). Kimlik yok ve "liste" değil.

http://www.example.com/aboutus/?format=xml

Çok sayıda parça ve parça içeren karmaşık bir XML belgesi döndürür. Bunda yanlış bir şey yok.

Endeks kaynağı?

"RESTful" anlamında çok fazla bir şey ifade etmez. "Dizin" sayfası insanlar içindir. RESTful API kullanan bir uygulama, belirli türde kaynaklar istemek üzere tasarlanmıştır.


4
+1 Cevabınızdan önemli bir noktaya değinmek istiyorum: REST programlanabilir bir paradigma; mutlaka insan tüketimi için tasarlanmamıştır.
Rein Henrichs

1

Görüşümün arka uçtan bağımsız olmasını sağlarım. Arka uçtan akordeon, gezinme çubuğu ve gövdeyle ilgili diğer nesneler gibi kaynaklar isteyebilirsiniz. Ancak, bu kaynak temsillerinin işlenmesini müşteri kodunuza bırakmalısınız, bu da sonunda gereksinimlere göre onları oluşturacaktır.


1

"Hakkımızda" için kaynak ... Biz :) er, sen. Sizin tanıtmak istediğiniz niteliklerini düşünün ve bunları temsil ile bir isim olarak toplayın.

Bu değerler bir veritabanından gelmek zorunda değildir ... muhtemelen bir dizi dize değeri olacaktır ve bunlar config'ten gelebilir, hatta bir sınıfta sabit kodlanmış olabilir.

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.