Я прочитал пару определений и обсуждений по приложениям REST и / или RESTful, но я до сих пор не понимаю его истинного значения.
Я обычно работаю с приложениями, которые либо извлекают данные через GET, либо отправляют данные через POST в какой-либо веб-сервис (обычно скрипт PHP), который затем либо получает данные из базы данных, либо выполняет запись в базу данных.
Теперь это приложение RESTful? Если нет, что бы RESTful приложение? В чем разница между концепцией RESTful и концепцией, с которой я работал до сих пор? Пожалуйста, объясните на примере.
Кроме того, кто-то говорит о REST, а кто-то о приложениях RESTful. Я обнаружил, что термин REST относится к теоретической концепции, тогда как RESTful используется, когда мы говорим о конкретном приложении. Правильно ли это или есть реальные различия между приложениями REST и RESTful?
Ответы:
Ключевыми атрибутами приложений RESTful являются: Все общение происходит через http: GET, POST, PUT, DELETE, и все элементы адресуются через стандартный URL-адрес формы,
http://your.site.com/salesapp/salesperson/0000001/details
т.е. только чистый URL-адрес без параметров и т. Д. URL-адрес идентифицирует объект GET. , POST, PUT, DELETE определяет, что вы хотите с ним сделать.Основная причина для этого заключается в том, что у вас автоматически есть служба без сохранения состояния, которая может быть сбалансирована по нагрузке, выполнена после сбоя и т. Д.
Сама простота схемы обеспечивает очень чистый интерфейс, полностью отделяющий клиента от любой конкретной серверной реализации.
источник
REST расшифровывается как представительский государственный трансфер. Если ваше программное обеспечение соответствует ограничениям REST, оно считается RESTful.
Хорошо, теперь, когда я бесстыдно вырвал из Википедии, что это на самом деле означает? Это фактически означает использование встроенных команд HTTP, таких как GET, POST, PUT, DELETE и несколько других, более редких, для обмена данными между клиентом и сервером.
То, что вы делаете, звучит как приложение RESTFul. Тем не менее, есть большая разница между хорошо разработанными и ненужными веб-сервисами RESTFul. Например, PHP-код на другом конце GET может выполнять изменение состояния, что считается неправильным, поскольку GET рассматривается как операция только для чтения. Существуют тонкие различия между тем, как используются POST (новый) и PUT (замена).
Статья в Википедии действительно хороша, поэтому я на этом остановлюсь.
источник
Прежде чем идти дальше, этот связанный вопрос может помочь вам
Разница между REST и RESTful заключается просто в семантике. REST - это архитектурный стиль, применяемый к отношениям клиент-сервер. RESTful - это просто способ сообщить своим клиентам, что вы используете REST.
Многие веб - приложения утверждают, что RESTful, но на самом деле лишь частично согласованные с к REST Ограничений (как Мартейн Вербург также ссылается в своем ответе). Я просто перечислю их здесь, но я настоятельно призываю вас прочитать статью:
Поскольку вы упоминаете, что работаете на стороне клиента, может быть полезно посмотреть, что архитектура REST даст и ожидает от вас как связующего клиента. Хотя REST - это не HTTP, это, безусловно, самый популярный протокол, который поддерживает REST, поэтому я приведу свой пример.
Ваш клиент должен будет:
<link rel="pay" href="http://example.org/orders(1)/payment">
в HTML выражается переход состояния для создания ресурса платежа через POST с телом, содержащим некоторый XML-код, представляющий детали платежа, например номер кредитной карты , количество и так далее)Если он делает вышеупомянутое, то его можно рассматривать как клиента REST, вы можете назвать его «приложением RESTful», но это скорее будет означать, что вы используете REST на стороне клиента, что неверно, поэтому лучше избегать срок.
источник
RESTful означает, что интерфейс представляет собой набор объектов, которые могут быть прочитаны и обновлены (и, возможно, удалены). То есть нет многопараметрических запросов (только параметр - это объект, который вы хотите прочитать), и существует только один тип операции, которая что-либо изменяет на сервере, загрузка нового состояния.
Эти ограничения гарантируют, что все запросы являются идемпотентными (отправка их несколько раз не приводит к дополнительному эффекту их отправки один раз). Это важно, потому что сеть может выйти из строя в любое время и не доставить ни одного запроса или ответа, а с идемпотентными запросами вы просто отправляете это снова и не должны выполнять сложное восстановление.
источник