Руководитель IT проектов, продуктов и их разработки
· 06.08HTTP: для чего нужен - простыми словами
В прошлом посте я писала про REST API и приводила пример с рестораном — официант, кухня и меню. Теперь логично разобрать, как именно мы делаем заказ. Если API — это официант, который знает, что можно заказать, то HTTP — это правила, по которым мы должны этот заказ озвучить.
Допустим, мы посмотрели меню и нам нужно правильно сформулировать заказ. В ресторане есть правило: общаться вежливо и говорить подробно. Это и есть протокол передачи данных — HTTP/HTTPS. Соблюдая протокол, нужно сказать так: «Принесите, пожалуйста, говяжий стейк средней прожарки». Так официант нас точно поймет: мы вежливы и знаем, чего хотим. Если бы мы сказали просто «Мне стейк», то в лучшем случае получили бы стейк, но не говяжий. В худшем случае официант ничего не принесет. HTTPS — это тот же HTTP, но с шифрованием, чтобы никто не подслушал наш заказ. По HTTP же данные передаются открыто, и сейчас почти все ресурсы используют HTTPS.
На этом можно было бы и закончить: ведь что такое HTTP я уже написала) Далее опишу, как смотреть коды ошибок и зачем они нужны - что для проджекта может быть важно.
Когда мы вводим адрес сайта в браузере, происходит примерно вот что: HTTP-запрос отправляется на сервер, сервер его понимает, выполняет нужные действия и возвращает HTTP-ответ. Важно: запрос можно отправлять не только через браузер, есть множество других способов (инструменты разработчика, через командную строку — curl-запрос, и т.д).
Как выглядит HTTP-запрос? Запрос всегда включает в себя: Метод — что мы хотим сделать. Те самые GET, POST, PUT, PATCH, DELETE из предыдущего поста - часть HTTP запроса. URL — куда отправляем запрос. Например /menu/steaks— посмотреть стейки в меню. Версию протокола — указываем, какую версию протокола использовать. Например, HTTP/1.1 или HTTP/2. Заголовки (Request headers) — дополнительные данные. Например: с какого браузера мы передаем запрос? User-Agent: Mozilla/5.0. Тело запроса (Body) — содержимое запроса. В GET-запросах тело отсутствует (хотя технически его передать можно), а в POST и PUT оно требуется для передачи данных.
Если кажется что сайт не работает, форма обратной связи не отправляется, если кажется что проблема не на вашей стороне: стоит проверить, возможно вам не кажется. Для этого можно посмотреть, что ответил нам сервер по HTTP-протоколу. Самый простой способ посмотреть ответ - открыть DevTools: в браузре нажать F12 → перейти во вкладку Network → там прописаны все данные, из которых состоит запрос и ответ. Что мы там увидим? Нас интересует вкладка Response - ответ сервера.
Сервер отвечает тоже по правилам: Статус (код ответа) — получилось или нет. Например, 200 OK — всё хорошо, заказ точно такой, как и просили. Коды делятся на группы: 1xx — «Ожидайте». Например, запрос принят, но заказ еще готовят. 2xx — «Всё хорошо». 200 OK: Вот ваш стейк. 3xx — «Редирект». К примеру 301: ресурс переехал. Куда? Нужно смотреть в заголовке, в поле Location. 4xx — «Ошибка клиента» (Мы ошиблись!). 400 Bad Request: тот случай, когда мы сказали «Мне стейк» и официант не понял, что мы хотим. 5xx — «Ошибка сервера» (Не мы ошиблись!). 500 Internal Server Error: отключили свет, и заказ приготовить сейчас не могут, но всё обязательно починят. Заголовки (Response headers) — дополнительные данные, например: Content-Type: text/html говорит о том, что в теле ответа мы получили HTML-разметку. Тело ответа — сами данные. В ресторане бы нам просто отдали сам стейк.
Но! Если сайт не работает, не всегда можно увидеть ответ. Сайт может просто не достучаться до сервера и на это могут быть разные причины - плохая настройка сервера, недоступность сети и другие, но не об этом сейчас)
Получилось очень объемно, и многое осталось без внимания, но своими постами я хочу не научить, а объяснить — всё-таки это разные вещи 🙂
ОБ IT на пальцах: https://t.me/jer_it
еще контент автора
еще контент автора
Руководитель IT проектов, продуктов и их разработки
· 06.08войдите, чтобы увидеть
и подписаться на интересных профи