Изучаем Java EE 7 - [236]
:
>$ curl — v — X GET http://www.apress.com/java?limit=all&mode=list
>> GET /java?limit=all&mode=list HTTP/1.1
>> User-Agent: curl/7.23.1 (x86_64-apple-darwin11.2.0) libcurl/7.23.1 zlib/1.2.5
>> Host: www.apress.com
>> Accept: */*
В этом запросе присутствует несколько информационных фрагментов, отсылаемых с клиента на сервер:
• HTTP-метод, в данном случае GET;
• путь, в данном случае /java?limit=all&mode=list;
• другие заголовки запроса (User-Agent).
Обратите внимание: в этом запросе отсутствует тело сообщения. На самом деле запросы GET в принципе не имеют такого тела. На вышеуказанный запрос сервер выдаст следующий ответ:
>< HTTP/1.1 200 OK
>< Date: Sat, 17 Nov 2012 17:42:15 GMT
>< Server: Apache/2.2.3 (Red Hat)
>< X-Powered-By: PHP/5.2.17
>< Vary: Accept-Encoding,User-Agent
>< Transfer-Encoding: chunked
>< Content-Type: text/html; charset=UTF-8
>
>
>··
>··
>··…
В состав этого ответа входит следующая информация:
• код отклика — в данном случае 200-OK;
• несколько заголовков отклика — в предыдущем коде содержатся заголовки отклика Date, Server, Content-Type. В данном случае тип содержимого — text/html, но это может быть и информация в других форматах, например в XML (application/xml) или в форматах изображений (image/jpeg);
• тело объекта или представление — содержимым возвращенной веб-страницы в данном примере является тело объекта (здесь я продемонстрировал фрагмент HTML-страницы).
cURL (http://curl.haxx.se/) — это инструмент командной строки для передачи файлов с помощью URL-синтаксиса по различным протоколам — в частности, HTTP, FTP, SFTP, SCP и др. С ее помощью можно отправлять HTTP-команды, изменять HTTP-заголовки и т. д. Этот инструмент очень удобен для имитации пользовательских действий в браузере.
Поля HTTP-заголовков — это компоненты заголовка сообщения, содержащиеся в запросах и ответах. Файлы заголовков состоят из разделенных двоеточиями пар «имя/значение», которые записываются обычным текстом, завершаются переходом на новую строку и последовательностью символов перехода на новую строку. Основной набор таких полей стандартизирован организацией IETF и должен быть внедрен во всех реализациях, соответствующих протоколу HTTP. Но при необходимости в каждом приложении могут определяться и дополнительные имена полей. В табл. 15.2 приведено несколько распространенных заголовочных значений, которые могут встретиться вам в запросе или ответе.
Имя заголовка | Описание |
---|---|
Accept | Допустимые типы содержимого (например, text/plain) |
Accept-Charset | Допустимые наборы символов (например, utf-8) |
Accept-Encoding | Допустимые варианты кодировки (например, gzip, deflate) |
Accept-Language | Допустимый язык отклика (en-US) |
Cookie | Файл HTTP-cookie, ранее отосланный сервером |
Content-Length | Длина тела запроса в байтах |
Content-Type | MIME-тип тела запроса (например, text/xml) |
Date | Дата и время отправки сообщения |
ETag | Идентификатор конкретной версии ресурса (например, 8af7ad3082f20958) |
If-Match | Действие производится лишь в том случае, если клиент предоставил объект, совпадающий с таким же объектом на сервере |
If-Modified-Since | Допускает возврат кода состояния 304 — Не изменялось, если контент не изменялся с указанной даты |
User-Agent | Строка, соответствующая пользовательскому агенту (например, Mozilla/5.0) |
Сеть состоит из четко идентифицированных ресурсов, связанных друг с другом и доступных благодаря простым HTTP-запросам. Основными стандартизированными типами HTTP-запросов являются GET, POST, PUT, DELETE. Они также именуются операциями, командами или методами. HTTP определяет и другие, реже используемые, методы: HEAD, TRACE, OPTIONS, CONNECT.
• GET — это обычная операция считывания, которая запрашивает представление ресурса. Операция GET должна реализовываться безопасным образом, то есть не изменять состояние ресурса. Кроме того, запрос GET должен быть идемпотентным. Это означает, что он должен оставлять ресурс в одном и том же состоянии, независимо от того, сколько раз он вызывался: единожды, дважды или больше. Безопасность и идемпотентность обеспечивают значительную стабильность. Когда клиент не получает ответа (например, из-за отказа сети), он может обновить свои запросы, и эти новые запросы будут ожидать того же ответа, который был бы получен при первой попытке, если бы все пошло нормально. При этом состояние ресурса на сервере не повреждается.
• Если вызвать метод POST, имея определенное представление (текст, XML и т. д.), то будет создан новый ресурс, идентифицируемый по URI, заявленному в запросе. Например, POST может вызываться при прикреплении сообщения к файлу журнала, записи комментария в блог, занесении книги в список и т. д. Следовательно, метод POST не является ни безопасным (состояние ресурса изменяется), ни идемпотентным (при двукратной отправке этого запроса мы получим два новых подчиненных объекта). Если ресурс был создан на исходном сервере, то в ответ должен быть получен код состояния 201 — Создан. В большинстве браузеров генерируются лишь два вида запросов — GET и POST.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.