Restful web services на русском

Так как REST это акроним для REpresentational State Transfer, отсутствие состояний является важной чертой. Таким образом, это значит, что необходимое состояние для обработки запроса содержится в самом запросе, либо в рамках URI, параметрах строки запроса, тела или заголовках. URI уникально идентифицирует ресурс и тело содержит состояние (или изменение состояния) этого ресурса. Затем, после того, как сервер завершит обработку, состояние или его часть(и) отдается обратно клиенту через заголовки, статус и тело ответа.

Большинство из нас, кто был в этой отрасли, привыкли к программированию в контейнере, который дает нам понятие «Сессия, которая поддерживает состояние нескольких HTTP запросов. В REST, клиент должен включать всю информация для сервера для выполнения запроса, перепосылая состояние по необходимости, если это состояние должно охватывать несколько запросов. Отсутствие состояний обеспечивает большую масштабируемость, так как сервер не должен поддерживать или общаться через состояние сеанса. Кроме того, балансировщику нагрузки не придется беспокоиться о связанности сессии и системы.

Так в чем различие между состоянием и ресурсом? Состояние или состояние приложения, это то, что сервер заботится выполнить запрос для получения данных необходимых для текущей сессии или запроса.

Что такое RESTful Web Service?

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

Каждый встречал проблему с кнопкой «Назад» в своем веб приложении, когда оно ведет себя по разному в одной точке, потому что ожидались действия в определенном порядке? Такое происходит, когда нарушен принцип отсутствия состояний. Есть случаи, когда не соблюдается принцип отсутствия состояний, например, three-legged OAuth, ограничение скорости вызова API и т.д. Однако, приложите максимум усилий, чтобы состояние приложения не занимало несколько запросов к вашему сервису.

REST следует использовать, если для вас очень важно минимизировать связь между клиентскими и серверными компонентами в распределенном приложении.

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

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

Адаптация поведения богатого сервера в единый интерфейс HTTP может быть запутанным и порой кажется педантичным по сравнению с относительно простым подходом RPC.

Несмотря на трудности, преимущества в том, что у вас есть служба, которую клиент-разработчик должен легко понять из-за последовательного использования протокола HTTP. Службу следует легко обнаружить из-за гипермедиа, и клиент должен быть чрезвычайно устойчив к изменениям на сервере .

Преимущества гипермедиа и избежание состояния сеанса упрощают балансировку нагрузки и разделение обслуживания . Строгое соответствие правилам HTTP делает доступными такие инструменты, как отладчики и кеширование прокси.

Обновить

Мне кажется, что REST — это еще одно «последнее слово моды» (или я могу быть абсолютно неправ, потому что я никогда не видел REST на практике).

Я думаю, что REST стал модным, потому что люди, пытающиеся реализовать проекты типа SOA, обнаружили, что, используя стек SOAP, они не понимают обещанных преимуществ. Люди продолжают возвращаться в Интернет как пример простых интеграционных методологий. К сожалению, я думаю, что люди недооценивают объем планирования и дальновидности, которые входили в создание Интернета, и они упрощают то, что нужно сделать, чтобы обеспечить такое многократное повторное использование, которое происходит в Интернете.

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

  • Почему вам не нужно обновлять браузер, когда кто-то меняет какой-либо html на веб-сайте?
  • Почему я могу добавить полный новый набор страниц на веб-сайт, а «клиент» все равно может получить доступ к этим новым страницам без обновления?
  • Почему мне не нужно предоставлять «язык описания сервиса-описания» в веб-браузере, чтобы рассказать об этом, когда он перейдет на страницу http://example.org/images/cat что тип возврата будет jpeg-изображением и когда вы пойдете к http://example.org/description/cat возвращаемый тип будет text / html?
  • Почему я могу использовать веб-браузер для посещения сайтов, которые не существовали при выпуске браузера? Как клиент может знать об этих сайтах?

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

использует различные службы OpenId для аутентификации, gravatar.com для изображений аватаров, google-analytics и Quantserve для аналитической информации. Такая интеграция с несколькими компаниями — это то, о чем мечтает мир SOAP . Одним из лучших примеров является тот факт, что библиотеки jQuery, которые используются для управления пользовательским интерфейсом , извлекаются из сети доставки контента Google. Тот факт, что SO может направить клиента (т.

Ресурсы REST API

Е. Ваш веб-браузер) на загрузку кода с стороннего сайта для повышения производительности, свидетельствует о низкой связи между веб-клиентом и сервером.

Это примеры архитектуры REST на работе.

Теперь некоторые веб-сайты / приложения нарушают правила REST, а затем браузер работает не так, как ожидалось.

  • Проблема печально известной проблемы с обратной кнопкой вызвана использованием состояния сеанса на стороне сервера.
  • Балансировка нагрузки может стать болью, когда у вас есть состояние сеанса на стороне сервера.
  • Flash-приложения часто препятствуют тому, чтобы URL-адрес определял конкретное представление.
  • Другая проблема, которая нарушает работу веб-браузеров, плохо соответствует стандартам медиа-типа. Мы все время слышим о том, как IE6 нужно убить. Проблема в том, что стандарты не соблюдались должным образом или игнорировались по какой-либо причине.
  • Использование сеансов входа в систему является источником многих дыр в безопасности.

ОТДЫХ есть везде. Это часть сети, которая заставляет ее работать хорошо. Если вы хотите создавать распределенные приложения, которые могут масштабироваться, как в Интернете, быть устойчивыми к изменению, как в Интернете, и рекламировать повторное использование в Интернете, а затем следовать тем же правилам, которые они выполняли при создании веб-браузеров.

Большинство «про» ответов о REST, похоже, исходят от людей, которые никогда не разрабатывали веб-службу или клиента SOAP, используя среду, которая предоставляет соответствующие инструменты для этой задачи. Они жалуются на проблемы, с которыми я просто никогда не сталкивался, используя Visual Studio .NET и Rational Web Developer от IBM. Я полагаю, что если вам нужно разрабатывать веб-службы или клиенты на языке сценариев или на каком-либо другом языке с небольшой поддержкой или без поддержки инструмента, то это действительные жалобы.

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

Веб-служба — это программа, к которой могут обращаться другие программы через Интернет (http). Например, предположим, что у вас есть функция, которая  предоставляет текст в формате HTML. Цель приложения — это веб-браузер, который отображает результаты, и человек сможет легко прочитать этот текст на странице.

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

RESTful Web Services — краткое руководство

Возьмите приведенный выше пример, если веб-служба выводит текст в формате XML, тогда другие веб-службы, которые могут читать или понимать XML, могут использовать этот вывод.

Основным преимуществом веб-службы является то, что приложения могут быть написаны на любом языке, но они могут обмениваться данными и обмениваться данными друг с другом через веб-службу. Программные приложения, написанные на разных языках программирования и работающие на различных платформах, могут использовать веб-службы для обмена данными через Интернет (HTTP). Это взаимодействие (например, между Java и Python, или приложениями Windows и Linux) связано с использованием открытых стандартов (XML, SOAP, HTTP).

  • SOAP (простой протокол доступа к объектам)
  • UDDI (универсальное описание, обнаружение и интеграция)
  • WSDL (язык описания веб-сервисов)

Сколько существует различных видов веб-служб?

В первую очередь, существуют два типа веб-служб, простой протокол доступа к объектам (SOAP) и репрезентативный перенос состояний (REST).

  • Веб-служба SOAP принимает запрос в формате XML и генерирует вывод в формате XML.
  • Веб-служба REST более универсальна и может принимать XML, а также JSON в качестве запроса и генерирует вывод в XML, а также в JSON или даже HTML

Подробнее данный вопрос может быть изучен на наших курсах тестировщиков.

Добавить комментарий

Закрыть меню