HTTP протокол: запрос онлайн урок.


Аббревиатура HTTP расшифровывается как Hyper Text Transfer Protocol – протокол передачи гипертекста. В первую очередь, протокол является алгоритмом или же правилом. Таким образом можно отметить, что HTTP это система правил передачи данных через Интернет. Давайте рассмотрим это более детально.


Гипертекст означает исходный код HTML страниц, которая заключает в себя текст, HTML разметку и гиперссылки. Теперь мы можем заметить, что основная цель HTML это передача исходного кода веб-страниц. По факту, это передача текстовых файлов. Помимо этого, передача файлов других типов также возможна. Как уже известно из предыдущих лекций, веб-приложения используют архитектуру “клиент-сервер” для своей работы. HTML протокол – это один из протоколов, который используется для отправки запросов от клиента к серверу и получения соответствующего ответа. Давайте начнем с отправки запроса серверу.


Каждый запрос, отправленный при помощи HTTP протокола, должен включать следующее:



  1. Строка запроса с указанным методом и версией HTML

  2. Заголовки (headers)

  3. Тело запроса (body) и параметры


Рассмотрим эти составляющие детальнее.


1. Строка запроса с указанным методом и версией HTML


Её шаблон имеет следующий вид:


<Method> <URI> HTTP / <Version>

Здесь Method означает метод передачи данных. Он определяет основные свойства запроса и может быть одним из последующих значений:


OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT.


Наиболее распространенные значения это GET и POST. Метод запроса подчеркивает основное "намерение" запроса. Метод GET используется исключительно для получения информации от сервера. Например, просмотр новостей или поиск товаров. В этом случае мы не вносим намеренных изменений в состояние системы (или, проще говоря, не меняем данные на сервере, например, в базе данных). Метод POST используется для изменения состояния системы на сервере. Например, редактирование новости или товара, добавление комментария и т.п. Эти два метода - единственные, которые поддерживает браузер. Остальные можно применить, используя отдельные программы или утилиты для работы с запросами.


Итак, если необходимо получить что-то – используем GET. Если необходимо, чтобы система получила что-то новое от нас - используем POST.


URI (Uniform Resource Identifier) это универсальный код ресурса. Он может быть как и URL (Uniform Resource Locator - универсальный адрес размещения) так и URN (Uniform Resource Name - универсальный номер ресурса). Например http://google.com это URL, поскольку он вмещает в себя информацию о том, где расположен ресурс. А isbn:1137214941 - это URN, поскольку он имеет лишь идентификатор номера.


Version это версия HTTP протокола. К примеру,  1.1:


GET http://site-example.com/index.html HTTP/1.1

Эта строка запроса будет сформирована в момент, когда пользователь кликнет на ссылку с указанным адресом. Далее мы рассмотрим заголовки запросов.


2. Заголовки (headers)


Это дополнительная информация касательно запросов. Например, значения cookie, опции кеширования, дата, данные о платформе клиента, версии браузера.


Cookie: name=Mark, email=mark@site.com 
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0

В этом примере заголовки дают серверу информацию о системных параметрах и версии браузера. Также они обеспечивают запросы с информацией о файлах cookie c именем и email адресом. Заголовков запроса существует довольно большое количество. С полным перечнем можно ознакомиться в официальной документации или просто на страничке википедии.


Далее третий пункт.


3. Тело запроса (body) и параметры


Тело запроса должно включать основную информацию запроса, которая передается на сервер. Эта часть может отсутствовать, к примеру, в случае метода GET. Эта информация передается в виде параметров запроса. Параметры - это набор ключей и значений, например


name=Mike&phone=12345678&city=Kyiv

Можно заметить что у нас есть 3 параметра, которые отделены символом &:


name=Mike
phone=12345678
city=Kyiv

Эти параметры будут получены и обработаны сервером. В случае метода GET эти параметры будут видны в адресной строке после символа ?:


http://dummysite.com.ua?name=Mike&phone=12345678&city=Kyiv

При этом, тело запроса будет пустое. В случае метода POST эти параметры не будут видны в адресной строке, но будут помещены в тело запроса в такой же форме, как мы их видим в адресной строке, но без символа ? и адреса сайта:


name=Mike&phone=12345678&city=Kyiv

В следующем уроке мы рассмотрим из чего состоит ответ сервера.