Использование принципов REST и семантики HTTP в процессе определенно имеет смысл , но, вероятно, только в том случае, если ваше приложение также в конечном итоге является клиентом или сервером, взаимодействующим с HTTP.
Сложной частью является соблюдение многослойного ограничения HTTP, так как этот одиночный вызов вызывать так просто на другом элементе слоя, поскольку это просто вызов функции.
Однако одно преимущество заключается в том, что вы можете перемещать слой из одного места в другое. Вероятно, трудно достичь этого полностью, но я думаю, что это выполнимо, хотя я рискну предположить, что это никогда не было сделано.
В моих собственных мысленных экспериментах для этого все преимущества HTTP вступают в силу так, что простые кешированные в памяти или внутрипроцессные кеши не могут с этим справиться. Возьмите, например, проверку кэша или условные путы. Представьте себе, что вы можете сделать вызов функции с выразительностью HTTP-запроса:
получить эту вещь из этой службы, но только если ее ETag не "A", "B" или W / "C", поскольку это те, которые у меня есть в данный момент
Или
сохраните это здесь, но только если ETag W / "DEF" все еще действителен, так как это тег, который я использовал, когда делал свой GET только сейчас.
и
Я бы хотел найти такие виджеты, и результат должен быть предпочтительно в виде IAtomCollection, но вместо этого я возьму список ( Accept ). В прошлый раз, когда я задал этот вопрос, я получил ETag «foo» ( If-None-Match ), поэтому он мне не нужен, если он не изменился, но если вы не возражаете, Я хотел бы проверить правильность моего кэша на исходном сервере ( Cache-Control: must-revalidate ). Да, и кстати, здесь мои учетные данные ( Авторизация ).
Подобные вопросы очень легко выполнять в HTTP, и мы все знаем, как подделывать такие сложные запросы.
То же самое касается HTTP-ответов:
Привет, я нашел вашу коллекцию IAtomCollection и действительно проверил ее на сервере происхождения. То, что у вас есть, больше не действует, так что вот новое для вас. У него есть ETag «bar», и вы можете считать его свежим в течение двух минут без повторной проверки со мной, но если я уйду в следующий раз, когда вы спросите, вы можете продлить период свежести еще на одну минуту. И, конечно, ответ зависит от ваших полномочий (само собой разумеется?) И ваших предпочтений.
Опять старый добрый HTTP. Представьте себе возможность совершать вызовы методов, которые , умны!
Что касается HATEOAS, то если задуматься над инкапсулированием идентификаторов, это также позволит выполнить это ограничение. Но мои мысленные эксперименты не очень далеко пошли в этом направлении ...