Изучаем Java EE 7 - [233]

Шрифт
Интервал

Практика работы в браузере

Поскольку REST построен на базе Сети, для более полного понимания этого стиля приведу аналогию с работой в Интернете (через браузер). Например, вас интересует список технических книг по языку Java на русском языке. Как вы его найдете? Откроете в браузере сайт издательства «Питер» (www.piter.com). На этой странице вряд ли найдется именно та информация, которую вы искали, но с нее вам будет проще попасть к списку книг по Java, вышедшему в нашем издательстве. На домашней странице вы найдете строку для поиска по всем заголовкам издательства «Питер». Набираете в строке слово Java и оказываетесь на следующей странице: http://www.piter.com/search/index.php?q=Java&s.x=21&s.y=12&s=%CF%EE%E8%F1% EA&ext=&inSaleOnly=0&searchAs=0&orderBy=r&order=ASC&itemsPerPage=10. Здесь вашему вниманию предлагается список из десяти книг, но на самом деле их гораздо больше (видите внизу список страниц?).

Итак, вы сохраняете эту ссылку в вашем любимом менеджере закладок и начинаете просматривать список. Вас заинтересовала книга М. Вербурга и М. Эванса «Java. Новое поколение разработки». Нажимаете название-гиперссылку и попадаете на отдельную страницу с описанием книги (http://www.piter.com/book.phtml?97 85496 00544). Здесь вы можете прочесть аннотацию и просмотреть отрывок из книги.

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

Ресурсы и URI

В RESTful-архитектурах ресурсам отводится центральная роль. В предыдущем разделе я указал, что ресурс — это любая сущность, на которую клиент может поставить ссылку или с которой может попытаться взаимодействовать. Словом, любая информационная единица, стоящая того, чтобы на нее сделать ссылку (книга, результат поиска, оглавление). Ресурс может храниться в файле, базе данных фактически по любому адресу. Следует максимально избегать представления абстрактных концепций в качестве ресурсов; в таких случаях лучше удовлетвориться простыми объектами. Итак, какие ресурсы мы можем встретить в приложении, предназначенном для продажи книг?

• Список книг по Java.

• Книга «Java. Новое поколение разработки».

• Оглавление этой книги.

В Сети ресурсы определяются по URI, который состоит из имени и структурированного адреса, указывающего, где находится данный ресурс. Существуют различные разновидности URI: WWW-адреса, универсальные идентификаторы документов, универсальные идентификаторы ресурсов и, наконец, комбинации единых указателей ресурсов (URL) и единообразных имен ресурсов (URN). Примеры ресурсов и URI перечислены в табл. 15.1.


Таблица 15.1. Примеры ресурсов и URI
РесурсURI
Каталог компьютерной литературы издательства «Питер»http://books.piter.com/collection/kompyutery-i-internet
Обложка книги «Java. Новое поколение разработки»http://static2.insales.ru/images/products/1/3744/25513632/49600544.jpg
Информация о сотрудничестве с издательством «Питер»http://books.piter.com/page/sotrudnichestvo
Погода в Санкт-Петербургеhttp://pogoda.ru/Sankt-Peterburg/
Интересные фотографии с Flickr по состоянию на 1 января 2014 годаhttp://www.flickr.com/explore/2014/01/01
Интересные фотографии с Flickr за последнюю неделюhttp://www.flickr.com/explore/interesting/7days
Список приключенческих фильмовhttp://www.movies.com/categories/adventure

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

>http://host: port/path?queryString#fragment

http — это протокол, host — это DNS-имя или IP-адрес, а часть port необязательна. Path — это множество символов, образующих текстовый сегмент; разделительным знаком в данном случае является /. Далее идет строка запроса, также являющаяся необязательной (это список параметров, представленных в форме «имя/значение», где разделительным символом между такими парами является уже &). Последняя часть, отделенная символом #, — это фрагмент, указывающий на конкретное место в документе. Следующий URI предоставляет информацию о погоде в Лиссабоне 1 января 2014 года:

>http://www.weather.com:8080/weather/2014/01/01?location=Lisbon,Portugal&time=morning

Представления

Итак, мы выяснили, что такое ресурсы и где они находятся. Но что такое представление того ресурса, на который указывает URI? Существует ли несколько представлений для одного ресурса? Кстати, вам могут понадобиться разные представления одного и того же ресурса: в виде текста, в форматах JSON, XML, PDF, JPG и др. Работая с ресурсом, клиент всегда имеет дело с тем или иным его представлением; сам ресурс остается на сервере. Представление — это любая полезная информация о состоянии ресурса. Например, у списка книг по Java на сайте издательства Apress есть как минимум два представления:

• HTML-страница, отображаемая в браузере: http://www.apress.com/java;

• файл с книгами в формате «значения, разделенные запятыми» (CSV):


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

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