Яка різниця між REST & RESTful


540

Яка різниця між системою REST і системою, яка RESTful?

З кількох речей, які я читав більшість, так звані послуги REST - це фактично послуги RESTful. То яка різниця між ними.


3
Причина для цього полягає в тому, що якщо ви читаєте статтю за посиланням і шукаєте, що доктор Філдінг думає про більшість реалізацій REST, вони взагалі не є системами REST. Вони проявляють RESTful поведінку, але не можуть бути класифіковані як REST-системи.
AwkwardCoder

4
Я читав цю статтю, але не думаю, що це призвело до таких марних розрізнень, що знаходяться у ній.
JasonTrue

3
Стаття Вікіпедії про REST - en.wikipedia.org/wiki/Representational_State_Transfer - другий абзац - "Відповідність обмеженням REST часто називають" RESTful "."
Нейт

1
@PramodNikumbh відповів на це правильно нижче. Система "REST" - це система, яка відповідає більш широкому визначенню REST. Він демонструє хоча б деякі принципи відпочинку. "Відпочиваючий" описує набагато більш сумісну систему REST.
Ендрю Норман

Ну, я думаю, що в назві є плутанина, "фул" в RESTful буде плутати без громадянства і державний статус, і це дві різні речі, REST і RESTful, на мою особисту думку, повинні бути СТАТЕЛЕСНІ. уявіть собі державний REST на ім'я RESTles. :)
Waheed

Відповіді:


487

Представницький стан передачі (REST) - це стиль архітектури програмного забезпечення. Як описано в дисертації Роя Філдінга, REST - це "архітектурний стиль", який в основному використовує існуючі технології та протоколи Інтернету.

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


146
Так REST - це архітектура, а RESTful - прикметник?
manei_cc

4
@manei_cc: Хоча на практиці ви знайдете сервіси з назвою RESTful, які не відповідають архітектурі REST, а в основному схожі на REST, REST-бажання тощо. Тому завжди звертайте увагу, що "RESTful service" не обов'язково будується за допомогою REST архітектура, але правда, як писав Джастін Етьє: використовує існуючі технології та протоколи Інтернету .
Azder

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 відповів правильно нижче
Ендрю Норман

192

Послуги на базі REST / Архітектура проти RESTFUL Services / Архітектура

Щоб розмежувати або порівняти ці 2, ви повинні знати, що таке REST .

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підтримує всі концепції OOPs, приклади : C ++, C #

Object oriented languagesпідтримує деякі функції OOP, приклади : JavaScript, VB


Приклад :

ASP Dot NET MVC 4 є в REST-Basedтой час як Microsoft WEB API RESTFul.

MVC підтримує лише деякі з вищезазначених принципів REST, тоді як WEB API підтримує всі вищезазначені принципи REST.

MVC підтримує лише наступне з API REST

  • Ми можемо отримати доступ до ресурсу за допомогою URI

  • Він підтримує дієслово HTTP для доступу до ресурсу з сервера

  • Він може повернути результати у вигляді JSON, XML, тобто HTTPResponse.

Однак водночас у MVC

  • Ми можемо використовувати сеанс

  • Ми можемо зробити це значним

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

Ось чому MVC, REST-Basedтоді як WEB API підтримує всі вищезазначені принципи і є RESTFul.


10
Я не розумію, чому це було знято, ця відповідь приносить багато уточнюючої інформації.
Marcovecchio

5
найкраща відповідь поки що
Лімон

2
Це найкраща відповідь.
Mário Meyrelles

2
ви можете використовувати FTP з REST. см: stackoverflow.com/questions/35534812 / ...
crazyTech

7
Мови під категоріями "Об'єктна орієнтація" та "Орієнтована на об'єкт" вище. Об'єктно-орієнтовані мови відповідають усім принципам OOPS, в той час як об'єктові орієнтуються на деякі.
Mrchief

119

"REST" - це архітектурна парадигма. "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) або те і інше.

Насправді це 6 обмежень.
IronBlossom

2
@IronBlossom Care, щоб оновити відповідь з відсутніми двома?
Пол Флемінг

1
посилання мертве, з'являється нова URL-адреса IBM - RESTful Web Services
dthal

10

Представницький державний трансфер (REST) ​​- стиль архітектури програмного забезпечення для розподілених систем гіпермедіа, таких як Всесвітня павутина. Термін "Представницький державний трансфер" був введений і визначений у 2000 році Роєм Філдінг 1 [2] у своїй докторській дисертації. Філдінг є одним із головних авторів специфікації протоколу передачі гіпертексту (HTTP) версій 1.0 та 1.1. Відповідність обмеженням REST називається "RESTful". Джерело: Вікіпедія


8

Веб-сервіси - це, по суті, веб-сайти, вміст яких споживається комп'ютерними програмами, а не людьми. REST - це набір архітектурних принципів, які передбачають, що веб-сервіси повинні максимально використовувати HTTP та інші веб-стандарти, щоб програми отримували все хороше, що люди вже можуть вийти з Інтернету. REST часто контрастує з веб-сервісами SOAP та іншими веб-службами, орієнтованими на "віддалений процедурний дзвінок".

Презентації Стефана Тілкова на REST на Parleys.com досить непогані, особливо цей .

Щодо книги, ти не зможеш отримати кращого за Рістбердсон та Рубі затишні веб-сервіси .


Тож звичайний веб-сайт можна вважати додатком REST?
yoyo_fun

1
@yoyo_fun: Так, звичайний веб-сайт також може бути побудований НАЙКРАЩО. На деякому рівні абстракції, чи сервер повертає HTML людині або JSON (скажімо) програмі, не має значення.
Джим Ферранс


4

У моделі зрілості Річардсона визначено 4 рівні API. Вони визначаються як:

  • рівень 0: будь-яка система, яка має єдину кінцеву точку для всіх своїх apis (SOAP або RPC потрапляють у цю категорію). Апіс рівня 0 також може нагадувати "команди".

  • рівень 1: описувана система ResourceUri. Це система, яка визначає декілька URI на основі сутності (замість того, щоб мати єдину кінцеву точку, як, наприклад, системи рівня 0). Ці URI можуть використовувати різні дії http (POST, GET, PUT тощо) для здійснення різних дій проти цього ресурсу.

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

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

У той час як рівні 1, 2 і 3 рівня можуть розглядатися як системи REST, але тільки більш суворі рівні (також рівень 2 і рівень 3) вважаються RESTful.

Отже, по суті всі RESTful apis є REST apis, але не всі REST apis є RESTful

визначення моделі зрілості Річардсона


2

Подумайте про REST як архітектурний "клас", а RESTful - добре відомий "екземпляр" цього класу.

Зверніть увагу на ""; ми не маємо справу з "реальними" об'єктами програмування.


1

"Служба REST" та "RESTful service" - одне і те ж.

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

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


1

REST (Передача стану передачі) - це архітектура, за допомогою якої створюються WebServices.

і

RESTful - це спосіб написання послуг за допомогою архітектури REST. Послуги RESTful розкривають ресурси для визначення цілей взаємодії з клієнтами.


0

REST - це архітектурна схема створення веб-сервісів. RESTful сервіс - це реалізація цього шаблону.

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