Изучаем 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.
Ресурс | 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):
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.