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

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

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

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

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

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

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 для извлечения данных.

REST – это архитектурный стиль и дизайн сетевых архитектур.

Концепции REST называются ресурсами. Представление ресурса должно быть неактивным. Он представлен через некоторый тип медиа. Некоторые примеры типов медиа include 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.

См. Это сообщение в блоге о дизайнерах REST Design для получения более подробной информации о REST и вышеприведенных принципах.

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

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

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

Стоит прочтения:

  • Как я объяснил REST моей жене (теперь доступно здесь)
  • Архитектурные стили и дизайн сетевых архитектур

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

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

  • Почему медленное поглощение WADL?
  • Spring MVC @PathVariable получает усечение
  • Сделайте ASP.NET конвертер WCF в JSON, опустив tags «Key» и «Value»
  • Jersey Exception: SEVERE: читатель тела сообщения для classа Java
  • Использование JAXB для отмены / маршалирования списка
  • Почему программное обеспечение веб-сервера запрещает запросы PUT и DELETE?
  • Каковы наилучшие методы для вложенных ресурсов REST
  • Уверен ли REST возвращать контент после POST?
  • Spring 4 RestController JSON: характеристики недопустимы в соответствии с заголовками запроса «принять»
  • Использование сжатия GZIP с помощью Spring Boot / MVC / JavaConfig с RESTful
  • Как решить maven 2.6 зависимость плагина ресурса?
  • Interesting Posts

    Как я могу создать многостраничный текстовый документ из одного шаблона страницы в скрипте google-apps?

    objective C: SHA1

    Как вызвать пакетный файл, который находится на одном уровне выше текущего каталога?

    Как я могу узнать абсолютный путь запущенного процесса?

    Как получить текущее имя пользователя в .NET с помощью C #?

    Outlook 2013 + Gmail приводит к появлению многих сообщений в черновиках даже после их отправки

    Рекурсивно менять владельца windows 7

    Безопасно ли использовать логический флаг, чтобы остановить stream из C #

    Как я могу уменьшить изображение моей VMware?

    Вызов Mock Verify ()

    Внутренний жесткий диск SATA отображается как съемное устройство в Windows 7

    Когда использовать интерфейс вместо абстрактного classа и наоборот?

    objective C – Как использовать метод initWithCoder?

    Swift: создание массива со значением по умолчанию для отдельных экземпляров объекта

    Как проверить, существует ли файл на FTP перед FtpWebRequest

    Давайте будем гением компьютера.