Сервис калькулятора будет прост в моделировании в режиме RESTful.«R» в «CRUD» означает «чтение», и нет никаких причин, по которым «читать» также не может означать «вычислить».Таким образом, простой сервис калькулятора Reverse Polish можно получить через GET:
GET https://calc.com/rpnCalc?3&4&%2B
7
Приведенная выше схема URI просто добавляет три параметра в запрос GET:
3
4
+ (URL-encoded as %2B)
Это идемпотентный, безопасный и кешируемый запрос.Если бы это был безумно сложный математический запрос, для вычисления которого потребовалось много минут, я мог бы направить эти запросы в готовый HTTP-прокси и использовать его для мгновенного возврата любых предварительно вычисленных значений, если один и тот же URI будет запрашиваться повторно.
В зависимости от видов вычислений, которые вам нужно выполнить, вы также можете POST очень сложный запрос к ресурсу Calculator (передавая запрос в качестве тела запроса), и сервер может вернуть URI в «результат»ресурс, который вы можете затем ПОЛУЧИТЬ, чтобы получить результаты и даже разбить их на страницы.
Во-вторых, каково реальное преимущество использования REST по сравнению с SOAP, если логика SOAP уже имеет полный смысл?
Я могу получить доступ к вышеуказанному сервису калькулятора, используя инструмент командной строки, такой как curl , не создавая сложную часть SOAP.Я могу закодировать вызовы к нему за считанные секунды, не используя какую-либо стороннюю библиотеку XML или инструментарий SOAP.Я могу использовать обычные инструменты, такие как HTTP прокси, для кэширования результатов и повышения производительности.Мне не нужно беспокоиться о совместимости SOAP или проверять совместимость с WS-I.Если я правильно использую гиперссылки, я могу развивать и улучшать свой сервис, не затрагивая существующих клиентов и не заставляя их даже перекомпилировать.Нет версии WSDL и нет хрупкого контракта, который я должен поддерживать годами.Клиенты уже знают, что делают GET / PUT / POST / DELETE, и мне не нужно переопределять или заново документировать их семантику.Клиенты API, решающие, что предпочтут JSON вместо XML, могут получить его с помощью встроенной функции согласования содержимого HTTP.Я могу сделать абсолютно ноль этих вещей с помощью SOAP и веб-служб.
Эй, если SOAP соответствует вашим потребностям, примите это.Есть много преимуществ использования REST, но они могут не соответствовать вашей ситуации.По крайней мере, узнайте о том, что REST может дать вам с приличной книгой , как эта , а затем решитесь после получения полной истории.