Чи повинен веб-сервіс у стилі Netflix або Twitter використовувати REST або SOAP? [зачинено]


145

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

  1. Реалізація послуги REST займає нескінченно більше часу, ніж реалізація послуги SOAP. Існують інструменти для всіх сучасних мов / рамок / платформ для читання в WSDL та виведення проксі-класів та клієнтів. Реалізація послуги REST виконується вручну і - отримуйте це - читаючи документацію. Крім того, впроваджуючи ці дві послуги, вам доведеться "здогадуватися" про те, що повернеться через трубу, оскільки немає реальної схеми чи довідкового документа.

  2. Навіщо писати послугу REST, яка все одно повертає XML? Єдина відмінність полягає в тому, що з REST ви не знаєте типів, які представляє кожен елемент / атрибут - ви самостійно їх реалізуєте і сподіваєтесь, що одного дня рядок не натрапить на поле, яке ви вважали, що це завжди int. SOAP визначає структуру даних за допомогою WSDL, тому це не потрібно.

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

  4. Я чув аргумент, що за допомогою REST можна просто перейти URL-адресу в браузер і переглянути дані. Звичайно, якщо ваша послуга REST використовує просту аутентифікацію або її відсутність. Наприклад, сервіс Netflix використовує OAuth, який вимагає від вас підписувати речі та кодувати речі, перш ніж ви навіть можете подати запит.

  5. Навіщо нам потрібна "читабельна" URL-адреса для кожного ресурсу? Якщо ми використовували інструмент для впровадження послуги, чи нас справді цікавить фактична URL-адреса?


5
Слід зазначити, що REST не "винайдений", він існує з початку HTTP.
Дірк Волмар

5
Розмова між вами та Роєм Філдінг була б дуже цікавою. :)
Герт Гренадер

1
Кілька речей, щоб почати нас. По-перше, ненависть - це сильне слово. По-друге, наша галузь наповнена більш ніж одним із способів робити справи. Тому я не збираюся вникати у філософський аргумент щодо існування REST. Як хороший розробник, ви повинні бути відкритими до використання тієї технології, яка найкраще вирішить проблему. Для деяких веб-служб це може бути REST. Я писав більше, але це було закрито;)
Джейсон МакКері,

1
@Joe: Точка взята. Але частина іронії REST полягає в тому, що це не "нова" технологія, це лише нове слово для чогось, що працює з початку 90-х. І @ jsm11482: саме тому це питання закрите як "суб'єктивне та аргументативне" - адже воно залучає аргументи!
Даніель Приден

2
Моя відповідь на це запитання тут bit.ly/cAdYAr
Даррел Міллер

Відповіді:


193

Канарка у вугільній шахті.

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

Попереджувальні знаки

Ви абсолютно правильні, щоб створити КРАЩИХ клієнтів, ніж клієнти SOAP, потрібно більше часу. Набори інструментів SOAP забирають багато кодового коду і майже не докладають зусиль для клієнтських проксі-об'єктів. Завдяки такому інструменту, як Visual Studio та серверна URL-адреса, я можу отримати доступ до віддалених об'єктів довільної складності, локально за менше п'яти хвилин.

Послуги, які повертають application / xml та application / json, настільки дратують розробників клієнтів. Що ми маємо робити з цією інформацією?

На щастя, багато сайтів, які надають послуги REST, також надають купу клієнтських бібліотек, щоб ми могли використовувати ці бібліотеки для отримання доступу до ряду сильно набраних об’єктів. Здається, ніби німець, хоча. Якби вони використовували SOAP, ми могли б самі влаштувати ці класи проксі-серверів.

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

Так, ви коли-небудь намагалися використовувати веб-браузер як інструмент налагодження для будь-якого іншого, крім HTML та JavaScript. Повірте, це відстій. Ви можете використовувати лише два дієслова, кешування постійно стає на шляху, обробка помилок проковтує стільки інформації, вона постійно шукає чортова favicon.ico. Просто застрели мене.

Зчитувана URL-адреса. Тільки іменники, без дієслів. Так, це просто, доки ми робимо лише операції з CRUD, і нам потрібно лише отримати доступ до ієрархії об'єктів. На жаль, більшість додатків потребують трохи більшого функціоналу, ніж це.

Наступаюча катастрофа

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

Однак вони виявляють, що версія - це стільки ж проблема, але компілятор не допомагає виявляти проблеми. Рукописний клієнтський код - це непросто підтримувати, коли структури даних розвиваються і URL-адреси отримують відновлення. Створення API-інтерфейсів навколо лише іменників та чотирьох дієслів може бути дуже важким, особливо якщо RESTful Url завзяті повідомляють вам, коли ви можете та не можете використовувати рядки запитів.

Розробники почнуть запитувати, чому ми витрачаємо свої зусилля на підтримку форматів Json і форматів Xml, чому б не просто зосередити свої зусилля на одному та зробити це добре?

Як все пішло не так

Я скажу вам, що пішло не так. Ми як розробники дозволяємо відділам маркетингу скористатися нашою основною слабкістю. Наш вічний пошук срібної кулі засліпив нас реальністю того, що насправді є REST. На поверхні REST здається таким легким і простим. Назвіть свої ресурси за допомогою URL-адрес та використовуйте GET, PUT, POST та DELETE. Чорт, нас, розробники, вже знають, як це зробити, ми вже багато років працюємо з базами даних, у яких є таблиці та стовпці та оператори SQL, які мають SELECT, INSERT, UPDATE та DELETE. Це повинен був бути шматок пирога.

Є інші частини REST, які деякі люди обговорюють, такі як самоописованість та обмеження гіпермедіа, але ці обмеження не такі прості, як ідентифікація ресурсів та рівномірний інтерфейс. Здається, додає складності, де бажаною метою є простота.

Ця поливана версія REST багато в чому підтверджується в культурі розробників. Були створені серверні рамки, які заохочували ідентифікацію ресурсів та єдиний інтерфейс, але нічого не зробили для підтримки інших обмежень. Терміни почали плавати навколо диференціації підходів (HI-REST проти LO-REST, Corporate REST vs Academic REST, REST проти RESTful).

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

REST, термін, безумовно, став основним. Практично кожен великий веб-ресурс, що має API, підтримує "REST". Twitter і Netflix - це два дуже популярних. Страшно в тому, що я можу придумати лише один публічний API, який є самоописовим, і є пригорща, яка справді реалізує обмеження гіпермедіа. Впевнені, що деякі сайти, такі як StackOverflow та Gowalla, підтримують посилання у своїх відповідях, але у їхніх посиланнях є величезні щілини. API API StackOverflow не має кореневої сторінки. Уявіть, наскільки успішним був би веб-сайт, якби не було домашньої сторінки для веб-сайту!

Ви були введені в оману, боюся

Якщо ви зробили це досі, коротка відповідь на ваше запитання полягає в тому, що API (Netflix і Twitter) не відповідають усім обмеженням, і тому ви не отримаєте переваг, які повинні принести REST apis.

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

Клієнти REST не повинні бути побудовані для взаємодії з однією службою, вони повинні бути створені для обробки конкретних типів медіа, які можуть обслуговуватися будь-якою службою. Очевидний питання до цього полягає в тому, як можна створити клієнта REST для послуги, яка постачає application / json або application / xml. Ну ти не можеш. Це тому, що ці формати абсолютно непридатні для клієнта REST. Ви це самі сказали,

ви повинні зробити "здогадки" щодо того, що повернеться через трубу, оскільки немає реальної схеми чи довідкового документа

Ви абсолютно правильні для таких служб, як Twitter. Однак обмеження самоопису в REST говорить про те, що заголовок типу вмісту HTTP повинен точно описувати вміст, який передається по дроту. Додаток application / json та application / xml нічого не говорить про вміст.

Що стосується розгляду працездатності систем на базі REST, то слід переглянути більш широку картину. Говорити про байти конвертів - це як говорити про розмотування циклу при порівнянні швидкого сортування до сортування оболонки. Є сценарії, коли SOAP може працювати краще, і є сценарії, коли REST може працювати краще. Контекст - це все.

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

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

Те, що URI повинні бути непрозорими для клієнта, є однією з найбільш ключових речей при розробці систем REST. Прочитані URL-адреси зручні для розробника сервера, а добре структуровані URL-адреси полегшують серверну структуру для відправки запитів, але це деталі впровадження, які не повинні впливати на розробників, які споживають API.

API API навіть не близький до RESTful, і тому ви не можете бачити жодної користі від використання його через SOAP. API Netflix набагато ближче, але використання загальних типів носіїв свідчить про те, що недотримання навіть єдиного обмеження може мати глибокий вплив на переваги, отримані від послуги.

Це може бути не вся їх вина

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

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

Висловлення припущень щодо того, який тип подання буде повернено за посиланням, може призвести до проблем. Здійснення припущень щодо змісту подання на основі знань, які прямо не вказані в заголовках HTTP, безумовно, створить з'єднання, яке завдасть болю в майбутньому.

Чи повинні вони використовувати SOAP?

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


4
Це може бути не всім правдою. Amazon має як SOAP, так і REST інтерфейси для своїх веб-служб, і 85% їх використання використовується інтерфейсом REST. Незважаючи на весь корпоративний галас над стеком SOAP, це є досить переконливим свідченням того, що розробникам подобається простіший підхід REST. ДЖЕРЕЛО: oreillynet.com/pub/wlg/3005
Сурай Чандран

3
Ні, це лише переконливі докази того, що веб-розробникам подобається те, що вони сприймають як більш просте, а не те, що насправді це перевершує будь-який довгостроковий вид або в орієнтованому на ефективність. Справа в тому, що правильний інструмент для конкретної роботи - це те, що потрібно, а не "я знаю цей інструмент, тому всі завдання повинні відповідати йому".
Кевін Вільямс

61

SOAP є об'єктно-орієнтованим , віддалений виклик процедур стека технології. Це працює, будуючи нову абстракцію поверх існуючого протоколу (HTTP).

REST - це підхід, орієнтований на документ , який просто використовує функції існуючого протоколу (HTTP). "REST" - це просто казкове слово - концепція така: просто використовуйте Інтернет так, як він був розроблений для роботи!

У відповідь на зміни на запитання:

  1. "Реалізація послуги REST займає нескінченно більше часу, ніж реалізація послуги SOAP."

    Гм, ні, це не може бути нескінченно довше. І у випадках, коли те, що ви намагаєтеся отримати, це вже документ або файл , це насправді набагато швидше . Наприклад, специфікація OGC для WMS (Web Mapping Service) визначає як SOAP, так і REST версію протоколу, і є причина, чому майже ніхто не реалізує версію SOAP - це тому, що якщо ви намагаєтеся отримати карту, це набагато простіше просто створити URL-адресу та отримати байти зображень із цієї URL-адреси, ніж потурбуватися про інкапсуляцію її у SOAP-повідомлення. Але так, я погоджуюсь, що якщо суть веб-служби полягає в перенесенні якогось сильно типізованого об’єкта в модель об’єкта домену, SOAP краще підходить для цього використання.

  2. "Навіщо писати послугу REST, яка все одно повертає XML?"

    Ну так, це може бути нерозумно. Але це залежить від того, що таке XML. Якщо десь є чітко визначена схема для неї, то неоднозначності немає. Наприклад, ви можете вважати WSDL URL-адресами як своєрідною RESTful веб-службою для отримання інформації про веб-службу. У цьому випадку додавати накладні витрати іншого запиту SOAP було б безглуздо.

    Взагалі REST виграє, коли вміст, який передається, можна розглядати як файл, як єдине ціле . SOAP виграє, коли до вмісту потрібно розглядати як об’єкт з членами .

  3. "Я чув скаргу на те, що за допомогою SOAP у вас є" накладні витрати "конверта SOAP. У цей день і вік, чи насправді нам потрібно турбуватися про кілька байтів?"

    Так. Не за будь-яких обставин, але є сайти з великою кількістю трафіку, де це має значення. Чи достатньо різниці, щоб переважати смислові відмінності використання SOAP замість REST? Я сумніваюся в цьому. Якщо ви робите протокол видалення об'єктів, і кількість байтів щось змінить, SOAP, мабуть, не є для вас інструментом - можливо, вам слід використовувати CORBA або DCOM.

  4. "Я чув аргумент, що за допомогою REST ви можете просто перейти URL-адресу в браузер і переглянути дані."

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

  5. "Навіщо нам потрібна" читабельна "URL-адреса для кожного ресурсу? Якщо ми використовували інструмент для реалізації послуги, чи нас дійсно цікавить фактична URL-адреса?"

    Ну, це залежить. Навіщо нам потрібні читабельні URL-адреси для будь-якого ресурсу в Інтернеті? Ви можете прочитати есе Тіма Бернерса-Лі. Прохолодні URI не змінюються для обґрунтування, але в основному, доки ресурс може бути корисним у майбутньому, URI для цього ресурсу повинен залишатися колишнім.

    Очевидно, що в перехідних ресурсах (як, наприклад, посилання "Гроші сьогодні" у нарисі) немає необхідності, оскільки необхідність посилатися на ресурс відпадає, якщо відповідний ресурс відходить. Але для отримання більш постійних ресурсів (наприклад, запитань щодо StackOverflow, наприклад, чи фільмів на IMDB) ви хочете мати URL-адресу, яка буде працювати назавжди. Коли ви розробляєте веб-сервіс, вам потрібно вирішити, чи самі ресурси можуть переживати вашу послугу, і якщо так, то REST - це, мабуть, правильний шлях.

Для запису, так, я розробляв веб-сторінки ще задовго до існування NetFlix або Twitter. І ні, я ще не мав жодної потреби чи можливості впровадити клієнта ні до служб NetFlix, ні до Twitter. Але навіть якщо з їхніми послугами важко працювати, це не означає, що технологія, якою вони впровадили свої послуги, є поганою - лише те, що ці дві реалізації погані.

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


11
Майте на увазі, що SOAP не обмежується HTTP, отже, додаткова абстракція. Повідомлення в стилі SOAP можна використовувати для безлічі протоколів, і для цього вони мають ширший обсяг, ніж REST. Я думаю, що це простий факт, який багато прихильників REST іноді не впізнають. REST має своє місце, але так само мило.
jrista

4
@jrista: Добре. Справа не в тому, що з SOAP щось не так, як і з молотком, якщо ваша проблема справді є цвяхом. Навпаки, це питання, здається, говорить: "Я ненавиджу викрутки! Чому молоток не достатній для всіх? Переконайте, що викрутки повинні існувати!" - що, коли вкладається в цей контекст, виявляється для того, який він є абсурд.
Даніель Приден

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

@Daniel: Повна згода на вищезазначене питання ... жахливе запитання та про ідеальний приклад "суб'єктивного та аргументативного", як це виходить, і, звичайно, не могло бути більш абсурдним. : PI зробив би одне розрізнення щодо SOAP, однак ... я думаю, що він відповідає рахунку "швейцарського армійського ножа" набагато краще, ніж "молот". ; P
jrista

3
@Daniel Sheesh! Не означав когось ображати. Це чесне запитання, оскільки я не думаю, що REST - це правильний підхід для таких служб і служб, як вони. Будь ласка, не списуйте моє запитання з першого погляду. Я думаю, що це нормально, що це "аргументативно", оскільки насправді я викладаю аргументи. Я просто прошу спростування. Говорячи, що REST "використовує Інтернет так, як це було розроблено для роботи", мені це звучить як "назад у мої дні до всіх щебетень та фейсбуків ..." Ви не дали жодної інформації, яка б пояснювала, чому REST підходить для цих типів послуг. Хочете допрацювати?
Джош М.

17

Чесне запитання заслуговує на чесну відповідь. Але по-перше, чому ви використали текст цього питання як відповідь на інше питання, якщо ви не вважали, що це риторичний характер?

У будь-якому випадку:

  1. " Інструменти для всіх сучасних мов / фреймворків / платформ для читання в WSDL та виведення проксі-класів та клієнтів. Реалізація послуги REST здійснюється вручну, читаючи документацію. "

    Так само, як і постачальники браузерів читали та перечитували специфікацію HTML 4.01 вгору та вниз, щоб спробувати застосувати послідовний досвід перегляду. Чи замислювались ви над тим, що браузери були винайдені задовго до інтернет-банкінгу та потокового потоку, і все ж, ви можете використовувати браузер, щоб робити саме ці речі. Це стає можливим через єдину причину, що всі погоджуються використовувати HTML (та суміжні формати, такі як CSS, JS, JPEG тощо).

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

    Але для Twitter та Netflix не існує універсальної згоди, що "усі існуючі мікроблоги повинні використовувати додаток / твіт", - головним чином через те, що мікроблогінг настільки новий. Можливо, через кілька років декілька сервісів мікроблогінгу розташуються на одному API, щоб Twitter, Facebook, Identica та могли взаємодіяти. Жоден з існуючих API не знаходиться десь поблизу RESTful, як би вони не стверджували, тому я не очікую, що це станеться незабаром.

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

    Ви вдарили цвяхом по голові. REST - це все про розповсюджені та гіпермедіа, і це в значній мірі підсумовує це. Браузер розглядає, що отримує від запиту, і показує це користувачеві. Сторінка HTML зазвичай породжує набагато більше GET запитів, наприклад, CSS, сценарії та зображення. Зображення, як правило, відображається лише на екрані, виконується JavaScript тощо. Кожен раз, коли браузер робить те, що робить, тому що знайшов посилання в тезі <img>або <style>тезі, а тип носія відповіді був image/jpegабо text/css.

    Якщо Twitter створює API на основі гіпермедіа, він, ймовірно, завжди повертається application/tweetщоразу, коли ви переходите посилання на твіт, але клієнт ніколи не повинен його приймати, і завжди перевіряти, що він отримує, перш ніж діяти на нього.

  2. " Навіщо писати послугу REST, яка все одно повертає XML? "

    Це все зводиться до типів медіа. Як і HTML, якщо ви бачите елемент, який ви не знаєте, що насправді означає, специфікація HTML доручає вам їх ігнорувати та обробляти "тіло" тегу, якщо він має. Аналогічно, специфікація атома вказує вам ігнорувати невідомі елементи та сторонні розмітки (з різних просторів імен) і не обробляти тіло (IIRC).

    Проектування типів медіа-файлів для загальних проблемних доменів (як у форматі HTML- медіа для проблемного домену з багатою текстовою інформацією ) дуже важке. Створення типів медіа для дуже вузьких проблемних областей, ймовірно, набагато простіше (як, наприклад, твіт). Але завжди добре створити розширюваність і вказати, як повинні реагувати клієнти (і сервери), коли вони бачать елементи або елементи даних, які не відповідають специфікації. Наприклад, JPEG має тип запису, характерний для програми (наприклад, APP1), який використовується для утримання всіляких метаданих.

  3. " Я чув скаргу на те, що за допомогою SOAP у вас є" накладні витрати "конверта SOAP. У цей день і вік, чи насправді нам потрібно турбуватися про кілька байтів? "

    Ні, ми цього не робимо. REST абсолютно не в тому, щоб бути ефективним за допомогою дроту, він фактично торгує ефективністю дроту. Ефективність REST виходить з можливостей кешування, передбачених усіма іншими обмеженнями: Дисертація Філдінга зазначає: Однак, компроміс полягає в тому, що рівномірний інтерфейс погіршує ефективність, оскільки інформація передається в стандартизованій формі, а не в тій, що є специфічною для потреб програми. Інтерфейс REST розроблений таким чином, щоб він був ефективним для передачі даних із великими зернами гіпермедіа, оптимізуючи для загального випадку Інтернет, але в результаті створював інтерфейс, який не є оптимальним для інших форм архітектурної взаємодії. Я не думаю, що підрахунок байтів конвертів SOAP є надуманим.

  4. " Я чув аргумент, що за допомогою REST ви можете просто перейти URL-адресу в браузер і переглянути дані. "

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

    Але є набагато більше можливостей, ніж браузер для тестування API на базі HTTP, наприклад, утиліти командного рядка або розширення браузера, які дозволяють керувати майже будь-яким аспектом HTTP-запиту, перевіряти заголовки відповідей та виявляти посилання, які слід переслідувати. Але навіть це не так просто, як генерування заглушок WSDL та створення трилінійної програми для виклику функції в будь-якому разі.

  5. " Навіщо нам потрібна" читабельна "URL-адреса для кожного ресурсу? Якщо ми використовували інструмент для реалізації послуги, чи нас справді цікавить фактична URL-адреса? "

    Якщо ви подивитеся на те, як працює Інтернет, я майже впевнений, що люди загалом раді, що URI для сторінки wikipedia виглядає http://en.wikipedia.org/wiki/Stack_overflowзамість цього http://en.wikipedia.org/wiki/?oldid=376349090. Але це фактично не важливо. Найважливіше, що потрібно спробувати правильно, - це вибрати відповідні дані в URI, які, ймовірно, не зміняться. Ви можете подумати, що ідентифікатор бази даних ніколи не зміниться, але що відбувається, коли потрібно об'єднати два набори даних? Всі ваші первинні ключі змінюються. Назва сторінки (Stack_overflow) не зміниться.

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

Редагувати: форматування



3

WSDL та інші протоколи рівня документа є зайвими. Протокол HTTP підтримує набагато більш багатий набір операцій, крім простого подання документів та надсилання форм.

Прихильникам REST незручно з цим надмірністю.


Це не говорить про те, чому я повинен використовувати REST для таких типів послуг. Для мене це просто не "підходить". Якщо сказати, що "протокол HTTP підтримує набагато більш багатий набір операцій, крім простого подання документів і подачі форм", це не означає, що ми повинні насправді їх використовувати, якщо щось краще!
Джош М.

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