Отже, служба RESTful має в своєму словнику фіксований набір дієслів. Веб-сервіс RESTful бере це з методів HTTP. Існують деякі передбачувані переваги щодо визначення фіксованої лексики, але я не розумію цього. Можливо, хтось може це пояснити.
Чому фіксований словниковий запас, визначений REST, краще, ніж динамічно визначати словник для кожної держави? Наприклад, об'єктно-орієнтоване програмування - популярна парадигма. RPC описаний для визначення фіксованих інтерфейсів, але я не знаю, чому люди припускають, що RPC обмежений цими протипоказаннями. Ми могли динамічно вказати інтерфейс так само, як служба RESTful динамічно описує його структуру вмісту.
REST повинен бути вигідним тим, що може рости без розширення словникового запасу. Послуги RESTful динамічно зростають, додаючи більше ресурсів. Що не так у розширенні служби, динамічно вказуючи словник для кожного об'єкта? Чому ми просто не використовуємо методи, визначені на наших об'єктах як словниковий запас, і наші служби описують клієнту, що це за методи, і чи мають вони чи ні побічні ефекти?
По суті, я відчуваю, що опис структури ресурсів на стороні сервера еквівалентно визначенню словникового запасу, але ми змушені використовувати обмежений словниковий запас, в якому взаємодіють з цими ресурсами.
Чи дійсно фіксований словник відв'язує проблеми клієнта від турбот сервера? Я, безумовно, повинен бути пов'язаний з деякою конфігурацією сервера, це зазвичай розташування ресурсів у службах RESTful. Поскаржитися на використання динамічного словника видається несправедливим, оскільки нам доводиться динамічно міркувати, як так чи інакше зрозуміти цю конфігурацію. Служба RESTful описує переходи, які ви можете здійснити, ідентифікуючи структуру об'єкта за допомогою гіпермедіа.
Я просто не розумію, що робить фіксований словник кращим, ніж будь-який самоописуючий динамічний словник, який легко може дуже добре працювати в службі, подібній RPC. Це лише неправильне обґрунтування обмежувальної лексики протоколу HTTP?
Рефлексія
Просто, щоб прояснити свої думки трохи краще, ніж я зробив. Припустимо, ви розробляєте будь-який інтерфейс API загального призначення, можливо, навіть не для веб-сторінок. Були б ви щасливі, якби хтось сказав, що ви можете використовувати лише ці назви методів на своїх об'єктах? REST не обмежується HTTP, але врахуйте ситуацію, коли кожен API, який ви пишете, підключений до Інтернету або іншим чином просто складається з об'єктів, що містять методи GET POST PUT і DELETE. Тож той метод object.foo, який ви хотіли визначити, неможливий. Ви повинні визначити новий об'єкт, який називається foo, та назвати його метод GET. Це по суті, як працює REST, і мені це стає незручно думати про це. У вас немає кращого загального розуміння того, що робить foo, ви просто змушені були створити новий об’єкт для того, що є по суті методом на батьківському об'єкті. Крім того, ваш API не менш складний, ви просто приховали складність інтерфейсу, створивши більше об’єктів. RESTful веб-сервіси змушують нас використовувати інтерфейс, який може бути, а може бути і недостатнім у контексті API, який ми відкриваємо. Можливо, є вагома причина для цього з API-інтерфейсами, однак веб-сторінками, але це вагома причина не приймати стандартні інтерфейси для кожного об'єкта в кожному API загального призначення. Буде вдячний практичний приклад.