Что такое HTTP-методы и как их использовать?

Что такое HTTP-методы и как их использовать?
Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Каждый HTTP-запрос использует метод для описания своей основной цели. Каждый метод имеет определенное применение для задач, начиная от извлечения веб-страницы и заканчивая удалением ресурса. GET и POST — два наиболее знакомых, но есть еще семь других.





Узнайте об этой концепции и о том, для чего предназначен каждый из девяти возможных методов HTTP.





Что такое HTTP-метод?

Каждый сделанный вами HTTP-запрос включает в себя действие и цель для этого действия, подобно глаголу и существительному, которые действуют как объект.





СДЕЛАТЬ ВИДЕО ДНЯ ПРОКРУТИТЕ, ЧТОБЫ ПРОДОЛЖИТЬ СОДЕРЖАНИЕ

URL-адрес идентифицирует уникальный ресурс, выступающий в качестве цели запроса. Между тем, глагол — какое действие выполнить с этим URL-адресом — представлен методом.

Первая строка HTTP-запроса предоставляет наиболее важную информацию, включая версию HTTP, URL-адрес ресурса и метод запроса:



Ф0377Ф756AC47C91D2D51D54066517B5B7EAC040

Что такое 9 методов HTTP?

Первые четыре метода эквивалентны четырем действиям модели CRUD: Create, Read, Update и Delete. Соответствующие методы HTTP: ПОЧТА , ПОЛУЧАТЬ , ПОМЕЩАТЬ , и УДАЛИТЬ .

ПОЛУЧАТЬ

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





ПОЧТА

Используйте POST для создания новых ресурсов, особенно если у этих ресурсов есть идентифицируемый родительский ресурс. Например, если у вас есть ресурс /clients, вы должны создать нового клиента, отправив необходимые данные в /clients.

ПОМЕЩАТЬ

Обновите или замените существующий ресурс. Это похоже на POST, но за выбор уникального идентификатора ресурса отвечает клиент. Чтобы создать ресурс с помощью PUT, URL-адрес ресурса должен включать идентификатор, например, /клиенты/007 .





УДАЛИТЬ

Используйте этот метод, чтобы удалить ресурс, указанный в URL-адресе. Как и все методы HTTP, поддержка зависит от сервера. Это может позволить любому удалить ресурс, хотя это явно было бы рискованно. Сервер, поддерживающий DELETE, обычно требует аутентификация и авторизация .

Два других метода обеспечивают небольшие вариации вышеизложенного: ПЛАСТЫРЬ и ГОЛОВА . Они могут оказаться полезными при использовании определенных API или при создании собственного.

ПЛАСТЫРЬ

Метод PATCH обновляет существующий ресурс только с частичными данными. Другими словами, вам не нужно предоставлять полное представление нового ресурса, а только те поля, которые необходимо обновить.

Запрос HEAD предназначен для случаев, когда вам нужна информация о ресурсе, но не о самом ресурсе. Ответ не будет включать тело, но будет содержать набор полезных заголовков HTTP. Вы можете узнать общий размер файла перед его загрузкой через заголовок ответа Content-Length.

Остальные методы — ПАРАМЕТРЫ , СОЕДИНЯТЬ , и СЛЕД — более неясны. Они имеют дело с метаданными, сетями и устранением неполадок. Вы можете найти их полезными в определенных типах программирования, но вы, вероятно, не будете использовать их каждый день.

ПАРАМЕТРЫ

Сервер должен ответить на этот метод, сообщив вам, какие HTTP-методы фактически поддерживает ресурс. Это может быть полезно для открытия.

СОЕДИНЯТЬ

Определенные типы сетевого программного обеспечения могут использовать этот метод для установления туннеля между двумя компьютерами. Это часто используется для инициирования соединения HTTPS через прокси.

СЛЕД

Этот метод полезен для устранения неполадок. Получив его, сервер должен отправить обратно полученный запрос в теле ответа. Метод обеспечивает механизм проверки того, изменили ли промежуточные машины какие-либо детали запроса.

GET и HEAD — это единственные два метода, которые поддерживает любой обычный веб-сервер. Конкретный сервер может поддерживать или не поддерживать другие методы, поэтому вы должны сначала проверить.

Когда вы можете использовать эти методы?

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

HTTP-методы в HTML

форма элемент метод Атрибут позволяет вам установить метод HTTP, который будет использоваться при отправке формы. HTML поддерживает только почта и получать значения для этого атрибута, плюс неясная альтернатива диалогу.

 <form method="post"> 
  ...
</form>

Вы можете использовать такие функции, как Инструменты разработчика Chrome смотреть Сеть трафика и подтвердите метод, который ваш браузер отправляет для конкретного запроса. Обратите внимание, что большинство веб-форм отправляют POST, поскольку они обычно обновляют данные на сервере. Однако многие формы поиска используют GET, поскольку они просто извлекают данные, не изменяя их.

  Панель инструментов разработчика Chrome, показывающая 3 запроса с разными методами: POST, GET и PATCH.

Поскольку данные POST не являются частью URL-адреса, они более конфиденциальны, чем если бы вы отправляли их через GET. Данные по-прежнему находятся в теле запроса, где теоретически злоумышленник может их перехватить. Но отправка данных через HTTPS должна смягчить эту проблему.

Вы никогда не должны реализовывать вход пользователя с запросами GET. Несмотря на то, что вход в систему может показаться больше похожим на операцию чтения, чем на создание или обновление, вам все равно нужно использовать POST для защиты данных.

Поскольку HTML-формы поддерживают только GET и POST, вы не можете напрямую создать форму, которая, например, удаляет ресурс на сервере. Обычный обходной путь, который соблюдает принципы REST на сервере, заключается в использовании переменной-заполнителя и притворении, что это был исходный метод HTTP. Например:

F2ED0D7A1E1170B462C057AF9A274955AACD873

Ваш серверный код может проверять наличие этой переменной «прокси-метода» и обрабатывать ее так, как если бы это был реальный используемый метод. Например, в PHP:

как придать тексту контур в фотошопе
 $method = $_SERVER["REQUEST_METHOD"]; 

if (array_key_exists("_method", $_REQUEST)) {
  $method = $_REQUEST["_method"];
}

Отправка HTTP-запросов программно

Web Fetch API предоставляет функцию JavaScript fetch(), которую можно использовать для отправки HTTP-запроса. Он поддерживает весь спектр методов, а не только GET и POST, которые поддерживает HTML.

Функция выборки по умолчанию отправит запрос GET. Чтобы использовать другой метод, укажите его имя в качестве значения для метод свойство в объекте, который вы отправляете в качестве второго аргумента.

 fetch('https://example.com/', { method: "HEAD" }); 

Вы также можете отправлять HTTP-запросы со многих серверных языков, включая PHP. На этом языке библиотека curl является распространенным способом отправки таких запросов.

В библиотеке curl есть опция CURLOPT_CUSTOMREQUEST, которую вы можете установить, чтобы указать метод

 if ($ch = curl_init($url)) { 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_exec($ch);
    // ...
}

Через командную строку

Инструмент командной строки curl позволяет передавать данные на сервер или с сервера по одному из нескольких протоколов. HTTP (и HTTPS) — два очень распространенных варианта использования.

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

 curl -v -s -o /dev/null example.com/get-test 

Вы можете увидеть метод запроса в пятой строке вывода:

  Пример GET-запроса с помощью curl.

Вы можете изменить метод запроса, который отправляет curl, используя флаг -X:

 curl -v -s -o /dev/null example.com/get-test -X POST 

Теперь curl отправляет запрос методом POST:

  Пример POST-запроса с помощью curl.

HTTP имеет множество применений

Большая часть того, что вы делаете в Интернете, будет включать стандартные запросы GET, а иногда и POST для отправки форм. Но HTTP гораздо более выразительный протокол, чем можно предположить.

Некоторые из наиболее распространенных методов отражают модель CRUD, что делает HTTP отличной основой для создания ориентированного на ресурсы API.