EDIT1: Как я понимаю, для большинства программистов REST как концепция будет рассматриваться при создании API. Таким образом, REST находится в вашем списке дел, когда вы создаете API для потребления на машинах ; НЕ когда вы говорите о веб-страницах, с которыми люди будут взаимодействовать через браузер. EDIT2: И это не значит, что браузер не RESTful (так оно и есть). Я просто имею в виду, что где текущее действие, где большинство программистов мира (те, кто не работает на производителя браузеров) могут извлечь выгоду из REST, в основном в веб-сервисах.
Давайте рассмотрим пример
приложение, которое мы все знаем:
википедия.
Хорошо, но это не лучший пример - Википедия - это богатый веб-сайт, то есть богатый контент, созданный для людей, а не для компьютеров.
GET / wiki / Article_name: получает указанную страницу
DELETE / wiki / Article_name: удаляет страницу
POST / wiki / Article_name: создает новую страницу
PUT / wiki / Article_name: обновляет страницу.
Ваша структура данных основана на модели использования человеком Википедии, отсюда и путаница.
Ниже я приведу краткий пример API для Википедии, надеюсь, это поможет проиллюстрировать мою точку зрения. Это сделано очень быстро; и я не утверждаю, что это хороший дизайн API. : -)
Примечание 1: В приведенном ниже примере API я использую JSON. Что касается "RESTfulness", это не обязательно должен быть JSON, любой формат данных, который может быть содержательно обмениваться через HTTP, подойдет. Другими примерами могут быть XML, TXT, JPEG, AVI. В широком смысле «RESTfulness» применяется к заголовкам URL и HTTP, а не к телу страницы - тело остается свободным для конкретных нужд реализации.
Примечание 2: Я притворяюсь, что в Википедии есть внутренний, структурированный формат данных, который преобразуется в HTML-страницы - просто для иллюстрации моего взгляда, поскольку Википедия на самом деле не самая лучшая пример работы с ...
Первый выстрел в RESTful API для Википедии может выглядеть примерно так:
api.wikipedia.com / поиск / ключевые слова
Принимает GET с поисковыми словами в URL, возвращает набор данных JSON с идентификаторами страниц , заголовками страниц, URL-адресами и оценками релевантности.
api.wikipedia.com / статьи / ID /
Принимает GET, DELETE, POST, PUT и обрабатывает статью с внутренним идентификатором, равным «id» в URL. В зависимости от метода HTTP запроса, он будет:
- GET; возврат статьи (в предопределенном формате данных на основе JSON в Википедии)
- DELETE; удалить статью
- POST; создать новую статью (статья должна быть в теле запроса в предопределенном формате JSON)
- PUT; обновить статью (и вся страница должна быть отправлена заново в теле)
api.wikipedia.com / СМИ / ID /
Как указанная выше конечная точка «article», но для CRUD медиа, таких как изображения.
.. и так далее, пока не будут удовлетворены все потребности этого воображаемого API Википедии.
Быстрый взгляд на воображаемый API, приведенный выше, обнаруживает ряд проблем ... и в этом прелесть REST; это просто и не мешает визуализировать обмен данными.
REST также интерфейс "для
браузер "или просто для скриптов?
РЕДАКТИРОВАТЬ3 Первоначальный текст был:
Он не предназначен для браузера, он предназначен только для API, предназначенных для использования другими клиентами или службами, которые являются «машинами».
Я хотел бы изменить это на: Браузер RESTful. Это также является данностью, то есть с установленной базой и тем, сколько времени требуется для замены IE6, ясно, что браузеры, которые у нас есть сегодня, будут с нами долгое время. А современные браузеры ничего не делают со специальными микроформатами или сайтами с XHTML для воспроизведения страниц и XHTML для передачи данных, они оставляют все это на ваше усмотрение с помощью Javascript.
Таким образом, при использовании современных технологий большая часть новой разработки, в которой применяется REST, заключается в создании более совершенных API веб-служб. А практические соображения заставят людей выбирать API своих веб-сервисов по URL, отличному от основного сайта.
По сравнению с другими технологиями веб-сервисов REST обладает значительным преимуществом в простоте отладки. Вы можете просто запустить клиент на своем ПК, отправить URL-адрес и сразу увидеть ответ. (Хорошо, то же самое относится в некоторой степени ко многим веб-сервисам на основе XML; но сгенерированный компьютером XML нецелесообразно для меня «читать».)
должны ли мы видеть мир HTTP исключительно глазами REST-представления?
Эхх, нет. Браузер обрабатывает 97% трафика сегодняшнего веб-сайта в среднем?
должен ли веб-доступ и интерфейс REST смешиваться или разделяться?
Отдельно, в приведенном выше примере я использовал api.wikipedia.com , чтобы показать, что он полностью отделен от обычного сайта Википедии. Из практических соображений, таких как распределение нагрузки, разные графики выпуска, разные бизнес-требования.