Monday, July 12, 2010

HTTP REST Overview

Ранее я упоминал, что доступ к Windows Azure Storage осуществляется через HTTP REST интерфейс. Давайте разберемся что это означает.

REST (Representational State Transfer) – это архитектурный стиль организации доступа к данным. В его основе лежат три понятия: ресурсы, их идентификаторы, и набор операций для работы с ресурсами.

REST

Сам по себе REST не привязан ни к какой конкретной платформе, технологии или протоколу передачи данных. Однако на сегодняшний день наиболее распространена реализация REST поверх HTTP для доступа к данным через Web.

Вообще говоря, REST очень сильно напоминает организацию доступа к данным в реляционных БД. Там, зная сервер, базу, таблицу и идентификатор интересующего вас объекта, вы легко сможете манипулировать любыми данными используя универсальные операции insert, select, update и delete.

В REST аналогом записи в таблице БД выступает ресурс. Ресурсом может быть что угодно. Например, если у вас есть база данных с информацией о работе магазина, то каждый поставщик, каждый товар, каждый заказ – все это ресурсы.

К любому ресурсу можно получить доступ, зная его уникальный идентификатор. В REST в роли идентификаторов выступают URL. Вот, например, URL, которые однозначно идентифицируют заказчика с ID=1701 и продукт с ID=11921.

http://example.com/customers/1701
http://example.com/items/11921

С помощью URL можно адресовать не только одиночные ресурсы, но и коллекции ресурсов. Вот, например, URL, которые адресуют все заказы, сделанные в мае 2010 года, а также все продукты зеленого цвета.

http://example.com/orders/2010/05
http://example.com/items?color=green

И, наконец, операции. В HTTP REST для доступа к данным используются стандартные методы протокола HTTP:

GET Запрашивает преставление ресурса с сервера (select).
POST Добавляет новый ресурс (insert).
PUT Добавляет новый ресурс либо обновляет уже существующий (insert / update).
DELETE Удаляет ресурс (delete).

Обратите внимание, что также как и методы для доступа к данным в БД, операции REST могут работать с абсолютно любыми ресурсами. Например, для организации доступа к заказам и продуктам вам не нужно реализовывать в API два отдельных метода GetOrder и GetItem. Доступ к обоим типам ресурсов можно будет получить с помощью метода HTTP GET.

GET http://example.com/customers/1701 
GET http://example.com/items/11921

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

Ссылки:

  1. How I Explained REST to My Wife
  2. A Brief Introduction to REST
  3. REST Web Services
  4. Roots of the REST/SOAP Debate

No comments:

Post a Comment