Главная » Spring » Поддержка архитектуры REST в Spring

0

Данные – всему голова.

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

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

В последние годы все большую популярность обретает альтер- натива традиционным веб-службам на основе протокола SOAP – архитектура передачи представлений о состоянии (Representational State Transfer, REST). Чтобы помочь разработчикам приложений на основе фреймворка Spring воспользоваться преимуществами архи- тектуры REST, ее поддержка была включена в версию Spring 3.0.

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

Самое интересное, что поддержка REST в Spring реализована по- верх Spring MVC. То есть мы уже знаем многое из того, что нам потребуется для работы с REST в Spring. В этой главе мы созда- дим контроллеры, обслуживающие запросы на получение ресурсов RESTful, опираясь на уже имеющиеся знания о фреймворке Spring MVC. А также посмотрим, что может предложить фреймворк Spring для взаимодействия со службами REST со стороны клиента.

Но прежде чем перейти к практической стороне дела, определим, что такое REST.

Обзор архитектуры REST

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

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

Основы REST

Многие ошибочно считают, что архитектура REST, являющаяся способом организации «веб-служб с адресами URL», – это еще один механизм вызова удаленных процедур (RPC), подобно SOAP, где вызовы осуществляются посредством простых обращений по про- токолу HTTP и без огромных пространств имен SOAP в XML.

В действительности архитектура REST имеет весьма мало общего с RPC. Модель RPC является ориентированной на предоставление услуг и выполнение операций, тогда как архитектура REST ориен- тирована на предоставление доступа к ресурсам и данным.

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

Обзор архитектуры REST

511

# представление – ресурсы REST могут быть представлены прак- тически в любой форме, включая XML, формат представления объектов JavaScript (JavaScript Object Notation, JSON) или да- же HTML, какая лучше подходит для потребителя ресурсов;

# состояние  – в архитектуре REST состояние ресурсов пред-

ставляет больший интерес, чем операции, которые можно вы- полнить над ресурсами;

# передача  – архитектура предусматривает организацию пере-

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

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

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

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии