Я предполагал, что REST был веб-сервисом, но мне кажется, что я не прав, думая об этом - так что же такое REST?
Я прочитал Википедию, но все еще не могу обернуть голову вокруг этого. Почему во многих местах API называется REST API?
Я предполагал, что REST был веб-сервисом, но мне кажется, что я не прав, думая об этом - так что же такое REST?
Я прочитал Википедию, но все еще не могу обернуть голову вокруг этого. Почему во многих местах API называется REST API?
Ответы:
REST - это не конкретный веб-сервис, а концепция дизайна (архитектура) для управления информацией о состоянии. Основополагающим документом по этому вопросу была диссертация Роя Томаса Филдинга (2000) «Архитектурные стили и проектирование сетевых программных архитектур» ( доступна онлайн в Университете Калифорнии, Ирвин).
Сначала прочитайте пост Райана Томайко Как я объяснил REST моей жене ; это отличная отправная точка. Тогда прочитайте фактическую диссертацию Филдинга. Это не так сложно и не долго (шесть глав, 180 страниц)! (Я знаю, что вы, ребята, в школе, как это мало).
РЕДАКТИРОВАТЬ: я чувствую, что бессмысленно пытаться объяснить REST. У него так много понятий, как масштабируемость, видимость (без сохранения состояния) и т. Д., Которые читатель должен понять, и лучший источник для понимания - реальная диссертация. Это намного больше, чем POST / GET и т. Д.
REST - это шаблон проектирования программного обеспечения, обычно используемый для веб-приложений. С точки зрения непрофессионала это означает, что это широко используемая идея, используемая во многих различных проектах. Это означает REpresentational State Transfer . Основная идея REST заключается в обработке объектов на стороне сервера (как в строках таблицы базы данных) как ресурсов, которые могут быть созданы или уничтожены.
Самый простой способ думать о REST - это способ форматирования URL-адресов ваших веб-приложений. Например, если ваш ресурс назывался «сообщения», то:
/posts
Было бы, как пользователь будет иметь доступ ко всем сообщениям, для отображения.
/posts/:id
Будет, как пользователь будет получать доступ и просматривать отдельные сообщения, полученные на основе их уникального идентификатора.
/posts/new
Будет, как вы бы отобразить форму для создания нового сообщения.
Отправка запроса POST /users
была бы способом, которым вы фактически создадите новый пост на уровне базы данных.
Отправка запроса PUT /users/:id
будет такой, как вы бы обновляли атрибуты данного сообщения, снова идентифицируемого уникальным идентификатором.
Отправка запроса на УДАЛЕНИЕ /users/:id
будет такой, как вы удаляете данное сообщение, снова идентифицируемое уникальным идентификатором.
Насколько я понимаю, шаблон REST в основном популяризировался (для веб-приложений) инфраструктурой Ruby on Rails, в которой большое внимание уделяется маршрутам RESTful. Хотя я могу ошибаться по этому поводу.
Я, возможно, не самый квалифицированный, чтобы говорить об этом, но это то, как я это узнал (особенно для разработки Rails).
Когда кто-то ссылается на «REST API», обычно подразумевается API, который использует RESTful URL для получения данных.
REST
это архитектурный стиль и дизайн для сетевых программных архитектур.
REST
понятия упоминаются как ресурсы. Представление ресурса должно быть без гражданства. Это представлено через некоторый тип носителя. Некоторые примеры типов носителей включают в себя XML
, JSON
и RDF
. Ресурсы управляются компонентами. Компоненты запрашивают ресурсы и управляют ими через стандартный унифицированный интерфейс. В случае HTTP, этот интерфейс состоит из стандартной HTTP опса например GET
, PUT
, POST
, DELETE
.
REST
обычно используется более HTTP
, прежде всего, из-за простоты HTTP и его очень естественного соответствия принципам RESTful. REST, однако, не привязан к какому-либо конкретному протоколу.
Связь клиент-сервер
Клиент-серверные архитектуры имеют очень четкое разделение задач. Все приложения, созданные в стиле RESTful, также должны быть в принципе клиент-серверными.
Stateless
Каждый клиентский запрос к серверу требует, чтобы его состояние было полностью представлено. Сервер должен иметь возможность полностью понимать запрос клиента без использования контекста сервера или состояния сеанса сервера. Отсюда следует, что все состояние должно быть сохранено на клиенте. Мы обсудим представление без гражданства более подробно позже.
Cacheable
Могут использоваться ограничения кэширования, что позволяет помечать данные ответа как кэшируемые или не кэшируемые. Любые данные, помеченные как кешируемые, могут быть повторно использованы в качестве ответа на тот же последующий запрос.
Единый интерфейс
Все компоненты должны взаимодействовать через единый единый интерфейс. Поскольку взаимодействие всех компонентов происходит через этот интерфейс, взаимодействие с различными сервисами очень просто. Интерфейс такой же! Это также означает, что изменения реализации могут быть сделаны изолированно. Такие изменения не повлияют на взаимодействие фундаментальных компонентов, поскольку единый интерфейс всегда неизменен. Одним из недостатков является то, что вы застряли с интерфейсом. Если для конкретного сервиса может быть предоставлена оптимизация путем изменения интерфейса, вам не повезло, поскольку REST запрещает это. С другой стороны, REST оптимизирован для Интернета, поэтому невероятно популярны REST по HTTP!
Вышеприведенные концепции представляют определяющие характеристики REST и отличают архитектуру REST от других архитектур, таких как веб-сервисы. Полезно отметить, что служба REST является веб-службой, но веб-служба не обязательно является службой REST.
См. Этот пост в блоге о принципах дизайна REST для получения более подробной информации о REST и вышеуказанных принципах.
Это означает Передачу репрезентативного состояния и может означать много вещей, но обычно, когда вы говорите об API и приложениях, вы говорите о REST как о способе работы с веб-сервисами или о программах для общения через Интернет.
По сути, REST - это способ обмена данными между системами, и он делает многое из того, для чего был разработан SOAP RPC, но, хотя SOAP обычно устанавливает соединение, проверяет подлинность, а затем выполняет работу над этим соединением, REST работает почти так же, как работает в Интернете. , У вас есть URL, и когда вы запрашиваете этот URL, вы получаете что-то обратно. Это то, где вещи начинают сбиваться с толку, потому что люди описывают Интернет как самое большое REST-приложение, и хотя это технически правильно, это не помогает объяснить, что это такое.
Короче говоря, REST позволяет вам общаться между двумя приложениями через Интернет, используя инструменты, которые похожи на те, которые использует веб-браузер. Это намного проще, чем SOAP, и многое из того, что делает REST, говорит: «Эй, вещи не должны быть такими сложными».
Стоит прочтения:
http://en.wikipedia.org/wiki/Representational_State_Transfer
Основная идея заключается в том, что вместо постоянного подключения к серверу вы делаете запрос, получаете некоторые данные, показываете их пользователю, но, возможно, не всем, а затем, когда пользователь делает что-то, что требует дополнительных данных, или чтобы передать некоторые данные на сервер, клиент инициирует изменение в новое состояние.