✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Різниця між запитами cURL і WordPress

22

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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі