В последних двух постах мы взяли краткий обзор функции wp_remote_get
а также практическую реализацию ее использования.
Прежде чем переходить к другим аспектам WordPress HTTP API, важно точно знать, какая информация возвращается из удаленного вызова с помощью wp_remote_get
чтобы вы могли полностью понимать возвращаемые данные, чтобы написать более защитный код, и писать более сложные запросы, если возникнет такая необходимость.
Итак, в этой последней статье о выполнении запросов GET
мы собираемся рассмотреть именно это.
Обзор запроса
Помните, что всякий раз, когда вы делаете запрос с помощью wp_remote_get
, вам не нужно указывать только URL. Кроме того, вы также можете отправить необязательный массив аргументов, каждый из которых может заставить сервер реагировать по-разному, если он ищет определенную информацию.
Аргументы
Во многих случаях аргументы не понадобятся, так как значений по умолчанию будет достаточно; однако, если вы работаете с расширенным API или ищете полное понимание аргументов, следующая информация должна объяснить, каков каждый из доступных аргументов, как их использовать и как они влияют на запрос. Быть сделанным.
метод
Этот аргумент относится к типу запроса, который делается. Дело в том, что, поскольку мы используем wp_remote_get
, мы явно выполняем GET
.
Тем не менее, аргумент примет, GET
, POST
и HEAD
. Если вы решите использовать последнюю версию протокола HTTP, вы также можете указать OPTIONS
, PUT
, DELETE
, CONNECT
и TRACE
.
Эти конкретные методы выходят за рамки данной статьи, так как мы в основном сосредоточены на запросах GET
, но я хотел бы упомянуть их все здесь для полноты.
Тайм-аут
Этот аргумент показывает, как долго запрос должен ждать, прежде чем отказаться от ожидания ответа. Значение указывается в секундах, а значение по умолчанию — пять.
Таким образом, практически вы говорите, что «инициируйте запрос и подождите пять секунд ответа. Если ответ не получен, верните ошибку».
Хотя у меня никогда не было проблем со значением по умолчанию, возможно, это стоит изменить, если вы работаете с сервером, который занят и / или обрабатывает только небольшое количество запросов в секунду.
Перенаправление
Подобно аргументу timeout, это значение указывает, как долго запрос должен ждать перенаправления, прежде чем отказаться.
Дело в том, что запросы GET
редко приводят к перенаправлению. Чаще всего запросы GET
пытаются подключиться к URL-адресу для извлечения данных (и могут отправлять или не отправлять данные в строке запроса), а затем просто обрабатывают ответ или ошибку после завершения или истечения времени ожидания запроса.
Однако если вы планируете реализовать какой-либо механизм перенаправления, это значение можно указать в секундах. И, как и аргумент timeout, значение по умолчанию составляет пять секунд.
HTTPVersion
Это относится к используемой версии протокола HTTP. Хотя технические аспекты этого выходят за рамки данной серии, каждая версия протокола поддерживает различное количество типов запросов.
Мы рассмотрели каждый из них выше, и поскольку мы явно выполняем запросы GET
с использованием wp_remote_get
, то это значение не нужно изменять.
Однако, для полноты, на момент написания этой статьи протокол HTTP в настоящее время имеет версии 1.0 и 1.1. В зависимости от того, какую версию протокола поддерживает ваш сервер, вы можете использовать более широкий спектр методов.
блокировка
Этот аргумент относится к возможности сделать запрос без фактического приостановления загрузки страницы или ожидания завершения запроса.
По умолчанию это значение установлено в true, так как в контексте запросов GET
мы хотим дождаться возврата ответа, чтобы мы могли что-то с ним сделать; однако, если вы хорошо делаете запрос (хотя обычно это делается с помощью запроса POST
), для которого вам не нужен ответ, тогда вы можете установить для этого значения значение false.
Заголовки
Этот аргумент включает в себя все, что вы хотите отправить по проводам, кроме значений по умолчанию. При выполнении запроса GET
лично мне еще не удалось найти причину для использования чего-либо, кроме того, что отправляется по умолчанию; однако это не означает, что вам не нужно отправлять что-то более специализированное в будущем.
Заголовки обычно состоят из информации, такой как тип контента, кодировка контента, тип MIME и так далее.
Эти конкретные ценности выходят за рамки данной статьи; однако я планирую вернуться к ним, когда мы поговорим об общих удаленных запросах. Смысл упоминания их здесь заключается в том, чтобы просто определить, что именно возможно в данной статье.
тело
Этот аргумент прост, и любой, кто выполнил какую-либо работу с данными ответов, знает, что это в основном содержимое отправляемого запроса.
В контексте запроса GET
это может состоять или не состоять из каких-либо значений. Часто запросы GET
включают параметры строки запроса, которые могут служить содержимым для запроса; однако, если вам нужно указать больше информации, чем пары ключ / значение, или вам нужно явно указать место для своего контента, то это аргумент, в котором вы должны это сделать.
Печенье
Наконец, если есть какие-либо файлы cookie, которые необходимо отправить вместе с вашим запросом, то это параметр, в котором вы бы их указали.
Это, очевидно, наиболее полезно в контексте запроса данных с URL-адреса, с которым вы установили какой-то сеанс или в котором некоторая информация в настоящее время находится на клиентском компьютере — как, конечно, файл cookie — и которую, вероятно, необходимо отправить через провод к серверу.
Как и во многих приведенных выше аргументах, это то, что не часто используется в запросе GET
, но, тем не менее, открыто для спецификации.
Вывод
Исходя из того, что мы видели до сих пор, эта статья может сделать wp_remote_get
исключительно сложным, чем наш практический пример. Дело в том, что так не должно быть!
Помните, что информация, представленная здесь, предназначена для демонстрации того, что вы можете использовать при работе с этим конкретным методом API, а не то, что вам нужно использовать.
Продолжая изучать HTTP API, мы увидим эти конкретные аргументы все больше и больше; Однако они используются по-разному — и часто чаще — чем с другими методами. Тем не менее, стоит wp_remote_get
них здесь, поскольку они являются частью принятых параметров wp_remote_get
.