Думайте об этом так - важна ли эта функция или какая информация используется?
Когда вы имеете дело с REST, вы находитесь в состоянии состояния информации - вы смотрите, какая текущая информация (GET), или вы изменяете этот конкретный документ (POST, DELETE), или вы создаете новый документ (PUT).
В RPC речь идет о процедурах / функциях / методах / операциях ... как бы вы их ни называли на своем языке. Информация - это то, что обрабатывается или возвращается службой ... но может быть одним из многих. Возможно, мы ищем и возвращаем список товаров. Или мы могли бы вести переговоры о чем-то, где нам нужно какое-то взаимодействие назад и вперед. (Переговоры REST по большей части обрабатываются через HTTP, поэтому вы должны делать что-то с заголовками Accept и Accept-Language) Но важнее всего эта операция.
Тогда есть третий тип, который является документом / литералом SOAP ..., где важно сообщение, и вы должны догадаться, что вызываемая функция основана на сообщении. Если вы просто имеете дело с операциями CRUD, это, вероятно, хорошо. Преимущества по сравнению с REST в этом случае в том, что у вас все еще может быть WSDL, поэтому вы заранее знаете, какие элементы необходимо отправить и что ожидать в ответ.
Они все работают ... это в основном о том, как вы думаете о проблеме, и как легко конвертировать из того, что вы уже представляете, как API. Если вы начинаете с нуля, вы можете делать все, что захотите. Мне лично нравится SOAP (либо document / lit, либо RPC) в том смысле, что я могу дать файл WSDL, который кто-то может использовать для начальной загрузки своего клиента. У меня были случаи, когда люди делали серьезные запросы в течение нескольких часов. (объяснение некоторых абстрактных тонкостей API, таких как разница между отправкой пустой строки и нулевой, заняло некоторое время, но у меня были бы те же проблемы с REST)