Застосування RESTful дизайну на цілому веб-сайті?


11

Це все може натрапити на дуже новичок, але я намагаюся обернути голову навколо розробки веб-сайту, який ретельно RESTful. Я розумію, що застосовую RESTful дизайн до таких речей, як користувачі, фотографії, повідомлення в блогах тощо, тому що я думаю про них як про "об'єкти".

Але, як щодо сторінки "про нас". Що це за ресурс? Це навіть ресурс у СКОРОГО сенсі цього слова? Крім того, скажіть, я переходжу до URL-адреси "http://www.example.com/", який ресурс я запитую? Індексний ресурс?


Я думаю, що потрібне певне уточнення. Яка ваша кінцева мета. Яка потреба у спокійному дизайні. виймаючи спокій із рівняння, яку потребу ви намагаєтесь задовольнити?
Джонатан Кауфман

1
Кінцева мета - повноцінний веб-сайт. Структурування веб-сайту навколо спокійного дизайну, здається, має сенс, ґрунтуючись на способі роботи Інтернету. Я просто не впевнений, як застосувати такий вид дизайну до речей, які не здаються ресурсами, наприклад, про сторінку чи контактну сторінку.
ТейлорОтвелл

Відповіді:


6

Найпоширеніший шаблон ресурсів RESTful, який я бачу, - це додати представлення до URI:

/ тип ресурсу / ідентифікатор [/ view ] [/ page] [? filterparams]

Коли немає перегляду , ви просто обслуговуєте подання за замовчуванням. У вашому випадку:

  • / - запит на example.comповернення перегляду за замовчуванням для ресурсу верхнього рівня - вашого веб-сайту.
  • / aboutus - перегляд ресурсу верхнього рівня "Про нас". Або, як альтернатива, aboutusможе бути ідентифікований ідентифікатор ресурсу в області CMS найвищого рівня. *
  • / замовники / 1 / aboutus - цей запит вказуватиме на вигляд "Про нас", який охоплює клієнт 1 .

Як говориться, іноді найкраще трохи підробити для кращої семантики. Наприклад, StackOverflow використовує RESTful / questions / [id] для запитань, але сторінка Ask Question є / questions / ask, що не дуже RESTful ( askне є questionsресурсом), але має багато сенсу використовувати простих смертних.


* У CMS на найвищому рівні тип ресурсу часто, але не завжди, видаляється, оскільки він є зайвим.


10

Майте на увазі, що дизайн RESTful сам по собі покликаний забезпечити стандарт, за допомогою якого Інтернет стає рівномірним для програмування. Не завжди доречно чи корисно вбудовувати весь веб-сайт, орієнтований на людину, на чисту семантику REST.

Коли у вас є ресурси, вважати їх представництва корисним. Також важливо врахувати інші принципи дизайну REST, такі як безлікарня, та те, як вони впливають на ефективність та зручність роботи вашого веб-сайту. Але пам’ятайте, що REST - це інструмент, а не мета. Це засіб, а не мета.

Використовуйте RESTful семантику там, де це корисно , після розуміння їх мети та переваг, і не потійте її, якщо ваш сайт не ідеально RESTful. Це було б майже неможливо для будь-якого нетривіального сайту в будь-якому випадку.

TL; DR : REST - це інструмент. Використовуйте його, коли і де це корисно, але не обмежуйтеся цим.


2
+1 Тут більше відпочинку, ніж URL-адреси.
Джош Ное

Ajax, REST та зовнішнє посилання на ваш сайт REST може бути кошмаром. Спасибі за вашу відповідь.
Джонні

4

Але як щодо сторінки "про нас" [?] Що це за ресурс?

Складні. Нічого поганого в ресурсі, який містить компоненти, шматочки або структуру.

Ресурси не є "реляційними рядками бази даних" чи іншими атомними елементами. Вони ресурси.

Бази даних, орієнтовані на документи, справляються з цим більш витончено, оскільки ресурс може бути більшим та структурованим.

Це навіть ресурс у СКОРОГО сенсі цього слова?

Так.

Крім того, скажіть, я переходжу до URL-адреси "http://www.example.com/", який ресурс я запитую?

Немає.

Ви запитуєте ресурс "aboutus". Це можливо (але дивно), щоб ресурс був синглтон. Ніякого посвідчення і не "списку".

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

Повертає складний XML-документ із безліччю фрагментів та деталей. Нічого поганого в цьому немає.

Індексний ресурс?

У сенсі "ВИПУСК" це не означає багато. Сторінка "покажчик" призначена для людей. Додаток, що використовує API RESTful, призначений для запиту конкретних видів ресурсів.


4
+1 Я хотів би підкреслити важливий момент вашої відповіді: REST - це програмована парадигма; він не обов'язково призначений для споживання людиною.
Рейн Генріхс

1

Я б вважав, що мій погляд не залежить від бек-енду. Ви можете попросити резервні джерела для таких ресурсів, як речі, що йдуть на гармошці, навігаційній панелі та інших предметах, що стосуються тіла. Однак ви повинні залишити обробку цих представлень ресурсів своєму клієнтському коду, який з часом відобразить їх відповідно до вимог.


1

Ресурсом для "Про нас" є ... Нас :) е, Ви. Подумайте про ваші атрибути, які ви хочете оприлюднити, і розгорніть їх як іменник із поданням.

Ці значення не повинні надходити з бази даних ... це, мабуть, буде купа струнних значень, і вони можуть надходити з конфігурації або, можливо, навіть жорстко закодовані в класі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.