Метод это действие, которое клиент ждёт от сервера. Например, сервер отправит клиенту HTML-страницу сайта, или документ для закачки. Протокол HTTP не ограничивает количество разных методов, поэтому достигнута договорённость использовать только три основных:
- GET— получает данные с сервера. Например, видео с YouTube.
- POST— отправляет данные на сервер. Например, сообщение в Telegram.
- HEAD— получает только метаданные HTML-страницы сайта. Данные которые находятся в <head>-теге HTML-файла.
URI расшифровывается как «унифицированный идентификатор ресурса» (или Uniform Resource Identifier) это полный адрес сайта в Сети. Он состоит из двух частей: URL и URN. Первое — это адрес хоста. Например, www.ahost.uz . Второе это то, что ставится после URL и символа / например: URI www.ahost.uz/hosting URN-адресом будет /hosting. так же URN можно назвать адресом для конкретного файла на сайте.
Версия HTTP указывает, какую версию HTTP браузер использует при отправке запроса. Если её не указывать, по умолчанию будет стоять версия 1.1. Она нужна, чтобы сервер вернул HTTP-ответ с той же версией HTTP-протокола и не создал ошибок с чтением у клиента.
Адрес хоста нужен, чтобы указать, с какого сайта клиент пытается получить данные. Адрес указывают в виде домена, но он сразу же меняется на IP-адрес перед отправкой запроса с помощью DNS.
Для того что бы проверить запросы на сервер вы можете вставить код в php файл, после перейти на данную страницу:
<?php
session_start();
echo '<pre>';
print_r($_GET);
print_r($_POST);
print_r($_REQUEST);
print_r($_SESSION);
print_r($_COOKIE);
print_r($_SERVER);
echo '</pre>';
$method = $_SERVER['REQUEST_METHOD'];
$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
$method = $_SERVER['REQUEST_METHOD'];
?>
Все вышеперечисленные методы можно разделить на три группы безопасные, идемпотентные и не идемпотентные методы:
Безопасные (GET, HEAD, OPTIONS) — не изменяют данные, их можно выполнять в любой последовательности;
Идемпотентные (GET, HEAD, PUT, DELETE, OPTIONS, TRACE) — при повторном выполнении результаты будут ожидаемо одинаковыми;
Не идемпотентные (POST, PATCH) — при повторном выполнении результаты будут разными, если, например, отправить POST-запрос на создание элемента несколько раз подряд, то он может создать несколько элементов с одинаковыми данными.
Если по какой-то причине встроенных методов в спецификации HTTP недостаточно, можно использовать собственные кастомные методы. Для этого нужно чтобы сервер знал об их существовании и понимал, как обрабатывать запросы с этими методами.
Резюмируем: Понимание HTTP очень важно для реализации простого и добротного RESTful интерфейса между двумя оконечными узлами локальной сети. Эти знания вам пригодятся для создания удобства конечных пользователей.