Что такое REST? Немного смущен

Я был в предположении, что REST был веб-сервисом, но кажется, что я ошибаюсь, думая об этом - так, что такое REST?

Я читал в Википедии, но все еще не могу обернуть вокруг себя. Почему многие места относятся к API как API REST?

Ответ 1

REST не является конкретной веб-службой, а концепцией (архитектурой) проектирования для управления информацией состояния. В основу этой работы была положена работа Роя Томаса Филдинга (2000), "Архитектурные стили и дизайн сетевых архитектур программного обеспечения" (доступный в Интернете из Калифорнийский университет, Ирвин).

Сначала прочитайте сообщение Райана Томайко Как я объяснил REST моей жене; это отличная отправная точка. Затем прочитайте актуальную диссертацию Филдинга. Это не то, что продвинулось, и не длинное (шесть глав, 180 страниц)! (Я знаю, что вы, дети в школе, такие короткие).

EDIT: Я чувствую, что бессмысленно пытаться объяснить REST. В нем так много понятий, как масштабируемость, видимость (без гражданства) и т.д., Которые читатель должен понять, и лучшим источником для их понимания является фактическая диссертация. Это намного больше, чем POST/GET и т.д.

Ответ 2

REST - это шаблон разработки программного обеспечения, обычно используемый для веб-приложений. В непрофессиональных условиях это означает, что это широко используемая идея, используемая во многих разных проектах. Он обозначает Передача состояния репрезентации. Основная идея REST - обрабатывать объекты на стороне сервера (как в строках в таблице базы данных) как ресурсы, которые могут быть созданы или уничтожены.

Самый простой способ думать о REST - это способ форматирования URL-адресов ваших веб-приложений. Например, если ваш ресурс был вызван "сообщениями", то:

/posts Будет ли пользователь получать доступ ко всем сообщениям для отображения.

/posts/:id Будет ли пользователь получать доступ к отдельному сообщению и просматривать его, извлекать на основе их уникального идентификатора.

/posts/new Будет ли отображаться форма для создания нового сообщения.

Отправка запроса POST на /users будет таким, как вы на самом деле создадите новое сообщение на уровне базы данных.

Отправка запроса PUT в /users/:id будет заключаться в том, как вы обновляете атрибуты данного сообщения, снова идентифицируемые уникальным идентификатором.

Отправка запроса DELETE на /users/:id будет заключаться в том, как вы удаляете сообщение, которое снова идентифицируется уникальным идентификатором.

Как я понимаю, шаблон REST в основном был популяризирован (для веб-приложений) структурой Ruby on Rails, что делает большой упор на маршруты RESTful. Возможно, я ошибаюсь.

Я, возможно, не самый квалифицированный, чтобы говорить об этом, но я узнал об этом (особенно для разработки Rails).

Когда кто-то ссылается на "REST api", обычно они означают api, который использует URL-адреса RESTful для извлечения данных.

Ответ 3

REST - это архитектурный стиль и дизайн сетевых архитектур на основе программного обеспечения.

REST понятия называются ресурсами. Представление ресурса должно быть неактивным. Он представлен через некоторый тип медиа. Некоторые примеры типов медиа включают XML, JSON и RDF. Ресурсы обрабатываются компонентами. Компоненты запрашивают и управляют ресурсами через стандартный унифицированный интерфейс. В случае HTTP этот интерфейс состоит из стандартных HTTP-операций, например. GET, PUT, POST, DELETE.

REST обычно используется для HTTP, в первую очередь из-за простоты HTTP и его самого естественного отображения для принципов RESTful. Однако REST не привязан к какому-либо конкретному протоколу.

Основные принципы REST

Коммуникация клиент-сервер

Архитектуры клиент-сервер имеют очень четкое разделение проблем. Все приложения, созданные в стиле RESTful, также должны быть клиент-сервером в принципе.

Stateless

Каждый запрос клиента на сервер требует, чтобы его состояние было полностью представлено. Сервер должен быть в состоянии полностью понять запрос клиента без использования какого-либо состояния сервера или состояния сеанса сервера. Из этого следует, что все государство должно храниться на клиенте. Мы обсудим представление без гражданства более подробно позже.

Cacheable

Кэшированные ограничения могут быть использованы, что позволяет отображать данные ответа как кэшируемые или не кэшируемые. Любые данные, помеченные как кэшируемые, могут быть повторно использованы в качестве ответа на один и тот же последующий запрос.

Равномерный интерфейс

Все компоненты должны взаимодействовать через единый унифицированный интерфейс. Поскольку взаимодействие всех компонентов происходит через этот интерфейс, взаимодействие с различными службами очень простое. Интерфейс тот же! Это также означает, что изменения в реализации могут быть сделаны изолированно. Такие изменения не повлияют на взаимодействие фундаментальных компонентов, поскольку равномерный интерфейс всегда остается неизменным. Один из недостатков заключается в том, что вы застряли в интерфейсе. Если оптимизация может быть предоставлена ​​конкретной службе, изменив интерфейс, вам не повезло, поскольку REST запрещает это. Однако с яркой стороны REST оптимизирован для Интернета, поэтому невероятная популярность REST по HTTP!

Вышеупомянутые концепции представляют собой определяющие характеристики REST и различают архитектуру REST от других архитектур, таких как веб-службы. Полезно отметить, что служба REST является веб-службой, но веб-служба не обязательно является службой REST.

Смотрите этот блог post в Принципы дизайна REST для получения дополнительной информации о REST и вышеприведенные принципы.

Ответ 4

Речь идет о представлении State State Transfer, и это может означать много вещей, но обычно, когда вы говорите об API и приложениях, вы говорите об REST как способе работы с веб-сервисами или о том, чтобы программы могли общаться через Интернет.

REST - это в основном способ общения между системами и делает многое из того, что было разработано SOAP RPC, но в то время как SOAP обычно делает соединение, аутентифицируется, а затем делает что-то по этому соединению, REST работает почти так же, как это Интернет работает. У вас есть URL-адрес, и когда вы запрашиваете этот URL-адрес, вы получаете что-то обратно. Здесь все начинает запутываться, потому что люди описывают Интернет как самое большое приложение REST, и хотя это технически правильно, это не помогает объяснить, что это такое.

Вкратце, REST позволяет вам получать два приложения, разговаривающих через Интернет, с помощью инструментов, похожих на то, что использует веб-браузер. Это намного проще, чем SOAP, и многое из того, что делает REST, говорит: "Эй, все не так сложно".

Стоит прочитать:

Ответ 5

http://en.wikipedia.org/wiki/Representational_State_Transfer

Основная идея заключается в том, что вместо постоянного подключения к серверу вы делаете запрос, получаете некоторые данные, показываете это пользователю, но, возможно, не все, а затем, когда пользователь делает что-то, что требует больше данных или передать некоторые до сервера, клиент инициирует изменение в новое состояние.