Итак, сервис 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 общего назначения. Практический пример будет оценен.