✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Разница в запросах cURL и WordPress

36

cURL — очень популярная библиотека PHP, на которую я ссылался в нескольких других сообщениях (например, 1 и 2 ). И я думаю, что его следует просмотреть, изучить и, возможно, использовать всем, кто работает с PHP (да, даже тем, кто работает с WordPress).

Но из-за нативных API-интерфейсов WordPress у нас есть уровень абстракции, который позволяет нам достичь большей части той же функциональности (если не той же функциональности).

В частности, я говорю о wp_safe_remote_get.

Разница в запросах cURL и WordPress

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

Я специально упоминаю безопасный вариант этой функции для приведенного выше определения (есть и другой вариант, но важно принять меры предосторожности против произвольных URL-адресов по соображениям безопасности).

cURL и запросы WordPress

В любом случае, как могла бы выглядеть функция, если бы мы использовали эту библиотеку cURL?

<?php

try {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    $response = curl_exec($curl);

    if (is_object($response)) {
        return false;
    }

    if (false === $response) {
        throw new Exception(curl_error($curl), curl_errno($curl));
    }

    curl_close($curl);
} catch (Exception $e) {
    trigger_error(
        sprintf(
            'Curl failed with error #%d: %s',
            $e->getCode(),
            $e->getMessage()
        ),
        E_USER_ERROR
    );
}

Вкратце (и это характерно для большинства запросов cURL):

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

А если бы мы использовали тот же вариант кода в WordPress?

<?php

$response = wp_safe_remote_get($url);
if (is_wp_error($response)) {
    return '';
}
$response = $response['body'];

Это намного меньше и, возможно, легче читать (по крайней мере, для тех, кто работает в WordPress). Что касается аргументов, я также не передаю в функцию ничего, кроме URL.

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

Кроме того, как вы справляетесь с WP_Error, зависит от вас. Возврат пустой строки редко бывает лучшим вариантом; однако для целей этого примера этого достаточно. Случай, который нам в первую очередь нужен, — это тело ответа, и это фокус кода.

Когда мы используем тот или иной?

Когда дело доходит до работы с удаленными запросами cURL и WordPress и определения того, какой метод использовать, я склонен следовать этому правилу:

  • Если то, что мне нужно, может быть достигнуто с помощью функции WordPress API, я использую ее.
  • Если нет, я буду использовать cURL.

Я не могу предложить более твердое правило.

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

Оттуда у вас должно быть хорошее представление о том, какую библиотеку использовать.

Источник записи: tommcfarlin.com

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