REST похож на ОО в том, что они оба моделируют мир как сущности, которые принимают сообщения (то есть методы), но помимо этого они разные.
Ориентация объекта подчеркивает инкапсуляцию состояния и непрозрачность , используя как можно больше различных методов, необходимых для работы с состоянием. REST - это передача (представление) состояния и прозрачность . Число методов, используемых в REST, ограничено и одинаково для всех ресурсов. Наиболее близким к этому в ООП является метод ToString()
, который очень приблизительно эквивалентен HTTP GET.
Ориентация объекта с состоянием - вы ссылаетесь на объект и можете вызывать методы для него, сохраняя состояние в сеансе, где объект все еще находится в области видимости. REST - это без сохранения состояния - все, что вы хотите сделать с ресурсом, указывается в одном сообщении, и все, что вам нужно знать об этом сообщении, отправляется обратно в одном ответе.
В объектно-ориентированном виде не существует понятия универсальной идентичности объекта - объекты либо получают идентичность по своему адресу памяти в любой конкретный момент, по UUID, зависящему от инфраструктуры, либо по ключу базы данных. В REST все ресурсы идентифицируются с помощью URI , и их не нужно создавать или уничтожать - они всегда существуют в облаке, если сервер не ответит 404 Not Found или 410 Унесено , в этом случае вы знаете, что нет ресурса с этим URI.
REST имеет гарантии безопасности (например, сообщение GET не изменит состояния) и идемпотентности (например, запрос PUT, отправленный несколько раз, имеет тот же эффект, что и один раз ). Хотя в некоторых руководствах для конкретных объектно-ориентированных технологий есть что сказать о том, как определенные конструкции влияют на состояние, в объектной ориентации нет ничего, что говорило бы о безопасности и идемпотентности.