Найти тему
Журнал разработчика

Запись 27. Протокол HTTP

А причём тут собственно протокол HTTP? Всё дело в том, что я изучаю Python для веб-разработки. А значит надо понимать как устроена работа серверов и как с ними общаться. Вот с этим и будем дальше разбираться.

Сразу хочу напомнить, что я только учусь. И поэтому пишу обывательским, понятным, в первую очередь, мне самому языком.

Интернет – это огромная сеть компьютеров. Часть из них хранит информацию и обрабатывает запросы – это серверы. Браузеры пользователей, шлют запросы на серверы и называются при этом клиенты.

"Общаются" между собой клиенты и серверы по специальным правилам, которые и носят название протоколы. И вот тут на первое место и выходит протокол HTTP (HyperText Transfer Protocol) – протокол передачи гипертекста. Этот протокол отвечает за передачу веб-страниц между клиентами и серверами.

Загрузить из сети можно не только веб-страницы, но и файлы: картинки, видео, музыку. Все они являются объектами и у каждого из них есть своё имя – URL (Uniform Resource Locator).

Теперь попробуем что-нибудь поискать. Вбейте в поиске яндекса "Что такое URL".

Обратите внимание на значение в адресной строке, это и есть URL запроса
Обратите внимание на значение в адресной строке, это и есть URL запроса

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

Рассмотрим URL-запроса:

  • https– протокол
  • yandex.ru – имя сервера
  • search – идентификатор ресурса на сервере, в нашем случае сервис поиска
  • ? – служит некоей границей, за которой указываются параметры запроса. Они отделяются друг от друга знаком "&". В данном примере их два: text, со значением "Что такое URL" и lr, со значением "47"

lr – это некий технический параметр, эти параметры у разных поисковиков свои, так что не будем разбираться что это.

Согласно протоколу HTTP, в URL можно использовать только латинские буквы, цифры и некоторые знаки пунктуации. Так почему же мы видим в строке русские буквы? Это заслуга браузера, он немного приукрасил адрес. Попробуйте выполнить тот же запрос в другом браузере, результат может быть иным.

В Python есть библиотека, которая позволяет кодировать и декодировать URL.

-2
-3

Пока этого достаточно. Если появились вопросы, пишите в комментариях, будем разбираться.