В чем разница между REST и RESTful

540

В чем разница между системой REST и системой RESTful?

Из нескольких вещей, которые я прочитал, большинство так называемых REST-сервисов на самом деле являются RESTful-сервисами. Так в чем же разница между ними?

AwkwardCoder
источник
3
Причина этого вопроса в том, что если вы прочитаете статью в ссылке и посмотрите, что думает доктор Филдинг о большинстве реализаций REST, то они вовсе не являются системами REST. Они демонстрируют поведение RESTful, но не могут быть классифицированы как системы REST.
AwkwardCoder,
4
Я прочитал статью, но не думаю, что это привело его к таким семантически бесполезным различиям.
JasonTrue
3
Статья в Википедии о REST - en.wikipedia.org/wiki/Representational_State_Transfer - второй абзац - «Соответствие ограничениям REST часто называют« RESTful »».
Nate
1
@PramodNikumbh правильно ответил ниже. Система "REST" - это система, которая соответствует более широкому определению REST. Это показывает, по крайней мере, некоторые принципы отдыха. «Restful» описывает гораздо более REST-совместимую систему.
Эндрю Норман
Ну, я думаю, что в названии есть путаница, «ful» в RESTful будет путать без гражданства и с состоянием, и это две разные вещи, REST и RESTful, по моему личному мнению, должны быть STATELESS. представьте себе RESTles с состоянием RESTles. :)
Вахид

Ответы:

487

Передача репрезентативного состояния (REST) - это стиль архитектуры программного обеспечения. Как описано в диссертации Роя Филдинга, REST - это «архитектурный стиль», который в основном использует существующие технологии и протоколы Интернета.

RESTful обычно используется для ссылки на веб-сервисы, реализующие такую ​​архитектуру.

Джастин этир
источник
146
Итак, REST - это архитектура, а RESTful - прилагательное?
manei_cc
4
@manei_cc: Хотя на практике вы найдете службы с именем RESTful, которые не следуют архитектуре REST и в основном являются REST-подобными, любителями REST и т. д. Поэтому всегда обращайте внимание, что «служба RESTful» не обязательно создается с использованием REST архитектура, но верно, как писал Джастин Этьер: использует существующие технологии и протоколы Интернета .
Аздер
7
RESTful следует использовать для API, которые действительно уважают REST. Я видел слишком много "REST" веб-сервисов, которые использовали только GET или POST. RESTful акцентирует внимание на полном использовании глаголов HTTP и соглашениях об именах URL. Но это моя точка зрения.
Мартин
1
architectкоторого? URL? как https://translation.googleapis.com/language/translate/v2это стиль REST?
Асиф Муштак
1
stackoverflow.com/users/3807248/pramod-nikumbh имеет это правильно ответил ниже
Эндрю Норман
194

Услуги на основе REST / Архитектура против RESTFUL Services / Архитектура

Чтобы дифференцировать или сравнить эти 2, вы должны знать, что такое ОТДЫХ .

REST ( RE презентационного S Тейт T ransfer) в основном архитектурный стиль развития , имеющие некоторые принципы:

  • Это должно быть без гражданства

  • Он должен получить доступ ко всем ресурсам с сервера, используя только URI

  • Не имеет встроенного шифрования

  • У него нет сессии

  • Он использует один и только один протокол - HTTP

  • Для выполнения операций CRUD, он должен использовать HTTP глаголы , такие как get, post, putиdelete

  • Он должен возвращать результат только в форме JSON или XML, Atom, OData и т. Д. (Облегченные данные)

REST based services следовать некоторым из вышеперечисленных принципов и не все

RESTFUL services означает, что он следует всем вышеперечисленным принципам.

Это похоже на концепцию:

Object-based languagesподдерживает все концепции ООП, примеры : C ++, C #

Object oriented languagesподдерживает некоторые функции ООП, примеры : JavaScript, VB


Пример :

ASP Dot NET MVC 4 - это REST-Basedпока Microsoft WEB API есть RESTFul.

MVC поддерживает только некоторые из вышеуказанных принципов REST, тогда как WEB API поддерживает все вышеупомянутые принципы REST.

MVC поддерживает только следующее из REST API

  • Мы можем получить доступ к ресурсу, используя URI

  • Поддерживает HTTP-глагол для доступа к ресурсу с сервера.

  • Он может возвращать результаты в форме JSON, XML, то есть HTTPResponse.

Однако в то же время в MVC

  • Мы можем использовать сессию

  • Мы можем сделать это с состоянием

  • Мы можем вернуть видео или изображение из метода действия контроллера, который в основном нарушает принципы REST

Вот почему MVC есть, REST-Basedтогда как WEB API поддерживает все вышеперечисленные принципы и есть RESTFul.

Прамод Никумб
источник
10
Я не понимаю, почему это было отклонено, этот ответ приносит много разъясняющей информации на вопрос.
Марковеккио
5
лучший ответ на данный момент
Лимон
2
Это лучший ответ.
Марио Мейреллес
2
Вы можете использовать FTP с REST. пожалуйста, смотрите: stackoverflow.com/questions/35534812/…
crazyTech
7
Языки в категориях «Объектный» и «Объектно-ориентированный» выше. Объектно-ориентированные языки следуют всем принципам OOPS, а объектно-ориентированные - некоторым.
Mrchief
119

«ОТДЫХ» - архитектурная парадигма. «RESTful» описывает использование этой парадигмы.

Одиночный выстрел
источник
architectкоторого? URL? как https://translation.googleapis.com/language/translate/v2это стиль REST?
Асиф Муштак
2
Архитектура REST требует много черт. Вы не можете сказать, что что-то придерживается принципов REST, просто показывая URL.
SingleShot
42

Как сказал Джейсон в комментариях, RESTful просто используется как прилагательное, описывающее что-то, что соответствует ограничениям REST.

Даррел Миллер
источник
29

REST означает передачу представительского состояния. Это означает, что само состояние не передается, а просто его представление. Наиболее распространенный пример - приложение на чистом HTML-сервере (без JavaScript). Браузер ничего не знает о самом приложении, но с помощью ссылок и ресурсов сервер может передавать состояние приложения в браузер. Если кнопка обычно изменяет переменную состояния (например, открытая страница) в обычном приложении Windows, в браузере есть ссылка, которая представляет такое изменение состояния.

Идея состоит в том, чтобы использовать гипермедиа. И, возможно, для создания новых типов гипермедиа. Потенциально мы можем расширить браузер с помощью javascript / AJAX и создавать новые пользовательские типы гипермедиа. И у нас будет настоящее REST-приложение.

Это моя короткая версия REST, проблема в том, что ее сложно реализовать. Я лично говорю RESTful, когда я хочу сослаться на принципы REST, но я знаю, что на самом деле не реализую всю концепцию REST. На самом деле мы не говорим SOAPful, потому что вы либо используете SOAP, либо нет. Я думаю, что большинство людей не делают REST так, как это было задумано его создателем Роем Филдингом, мы фактически реализуем RESTful или REST-подобные архитектуры. Вы можете увидеть его диссертацию , и вы найдете аббревиатуру REST, но не слово RESTful.

Артуро Эрнандес
источник
23

REST - это стиль архитектуры программного обеспечения для распределенного программного обеспечения

Соответствие ограничениям REST называется «RESTful».

Очень используется сегодня для создания веб-сервисов в качестве альтернативы SOAP.

Здесь у вас есть ссылки для проверки

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

спасибо за ответы. Прочтите эту статью Алекса Родригеса, в которой говорится, что веб-сервис RESTful имеет 4 основных характеристики:

  1. Используйте HTTP-методы явно.
  2. Быть без гражданства.
  3. Раскрыть структуру каталогов, как URI.
  4. Передача XML, JavaScript Object Notation (JSON) или оба.
Kumait
источник
На самом деле имеет 6 ограничений.
IronBlossom
2
@IronBlossom Хотите обновить ответ недостающими двумя?
Пол Флеминг
1
мертвая ссылка, новый URL-адрес, по-видимому, IBM - RESTful Web-сервисы
19
10

Передача репрезентативного состояния (REST) ​​- это стиль архитектуры программного обеспечения для распределенных гипермедиа систем, таких как World Wide Web. Термин «Представительный государственный трансферт» был введен и определен в 2000 году Роем Филдингом 1 [2] в его докторской диссертации. Филдинг является одним из основных авторов спецификации протокола передачи гипертекста (HTTP) версий 1.0 и 1.1. Соответствие ограничениям REST называется «RESTful». Источник: Википедия

Андерссон Мело
источник
8

Веб-сервисы - это, по сути, веб-сайты, контент которых потребляют компьютерные программы, а не люди. REST - это набор архитектурных принципов, которые предусматривают, что веб-сервисы должны максимально использовать HTTP и другие веб-стандарты, чтобы программы получали все то хорошее, что люди уже могут получить из Интернета. REST часто противопоставляется веб-службам SOAP и другим веб-службам, ориентированным на «удаленный вызов процедур».

Презентации Стефана Тилкова на REST на Parleys.com довольно хороши, особенно эта .

Для книги вы не можете стать лучше, чем Ричардсон и Rubful Restful Web Services .

Джим Ферранс
источник
То есть обычный сайт можно считать REST-приложением?
yoyo_fun
1
@yoyo_fun: Да, обычный веб-сайт тоже может быть сконструирован REST. На некотором уровне абстракции неважно, возвращает ли сервер HTML человеку или, скажем, JSON программе.
Джим Ферранс
5

Служба, основанная на REST, называется «служба RESTful».

Источник, на который я рассчитываю опубликовать это: Архив Dr.Dobbs

Nickolay
источник
4

В модели зрелости Ричардсона определены 4 уровня API. Они определены как:

  • Уровень 0: любая система, которая имеет единственную конечную точку для всех своих API (SOAP или RPC попадают в эту категорию). Уровень 0 apis также может напоминать «команды».

  • Уровень 1: описанная система ResourceUri. Это система, которая определяет несколько основанных на объектах URI (вместо того, чтобы иметь одну конечную точку, как в системах уровня 0). Эти URI могут использовать различные действия http (POST, GET, PUT и т. Д.) Для реализации различных действий с этим ресурсом.

  • уровень 2: он же уровень 1 с совместимым использованием стандартных методов / глаголов HTTP и ответов с несколькими кодами состояния

  • уровень 3: он же уровень 2 плюс HATEOAS (гипермедиа включена в ответ, который описывает дополнительные звонки, которые вы можете сделать)

Хотя уровни 1, уровень 2 и уровень 3 могут рассматриваться как системы REST, только RESTful считаются только более строгими уровнями (то есть уровня 2 и уровня 3).

Таким образом, по существу все API RESTful являются API REST, но не все API REST являются RESTful

определение модели зрелости Ричардсона

Эндрю Норман
источник
2

Думайте о REST как об архитектурном «классе», тогда как RESTful - хорошо известный «экземпляр» этого класса.

Пожалуйста, обратите внимание на ""; мы не имеем дело с «реальными» объектами программирования здесь.

похлопывание
источник
1

«Служба REST» и «Служба RESTful» - это одно и то же.

Система RESTful - это любая система, которая следует соглашениям REST, определенным в первоначальном документе, который создал идею сетевых приложений RESTful. .

Стоит отметить, что существуют различные уровни RESTfulness. В целом, REST - это стиль, а не стандарт, поэтому есть возможность для интерпретации в зависимости от потребностей. один пример - иерархические URL ресурсов (например /things/ID/relatedthings) против плоских URL (например, /things/IDи /relatedthings?thing=ID)

Brenden
источник
1

REST (REpresentation State Transfer) - это архитектура, с помощью которой создаются веб-сервисы.

а также

RESTful - это способ написания сервисов с использованием архитектур REST. Службы RESTful предоставляют ресурсы для определения целей взаимодействия с клиентами.

Manas
источник
0

REST - это архитектурный шаблон для создания веб-сервисов. Служба RESTful реализует этот шаблон.

sajadre
источник