Як використовувати API techukraine.net із клієнтами PHP

| | 0 Comments| 11:36 AM
Categories:

У цьому посібнику ми розглянемо різні клієнти PHP, які можна використовувати для підключення до techukraine.net API.

Зокрема, ми розглянемо використання API techukraine.net із функцією file_get_contents, Guzzle, HTTPful і HTTPS-клієнт Symfony.

Що таке techukraine.net API?

techukraine.net надає набір безкоштовних інструментів, які можна використовувати для моніторингу ефективності вашого веб-сайту. Ці інструменти включають аналізатор пошкоджених посилань, час завантаження та перевірку DNS. Доступ до цих інструментів можна отримати онлайн через веб-інтерфейс або API.

API заснований на HTTP, і до нього можна отримати доступ з будь-якої мови програмування з клієнтською бібліотекою HTTP. API має щедрий безкоштовний рівень, яким ви можете почати користуватися без необхідності надавати платіжну інформацію.

Що ми будемо будувати

Ми напишемо сценарій, що виконується з командного рядка, який обчислить, скільки часу потрібно для завантаження веб-сайту Google і друку їх на терміналі. Ми реалізуємо цю просту програму за допомогою різних HTTP-клієнтів PHP, щоб продемонструвати, як виглядає використання API.

Зокрема, ми будемо використовувати вбудовані функції – file_get_contents() і php_curl, а також розширення Guzzle PHP. Якими б простими не здавалися ці приклади, вони демонструють основні концепції використання techukraine.net API.

передумови

Щоб продовжувати, вам потрібно знати PHP заздалегідь і встановити його на своєму комп’ютері. Крім того, вам знадобиться Composer для керування розширеннями.

Нарешті, вам також знадобиться текстовий редактор для написання коду. У моєму випадку я збираюся використовувати Visual Studio Code, популярний текстовий редактор із відкритим кодом від Microsoft. Ви можете завантажити його з веб-сайту Visual Studio Code.

Огляд techukraine.net API

API techukraine.net має різні кінцеві точки залежно від того, що ви хочете зробити. Повний список кінцевих точок і відповідну документацію можна знайти на сторінці документації.

Створення облікового запису techukraine.net

Щоб почати використовувати API, вам потрібно буде створити обліковий запис, перейшовши на цільову сторінку API та натиснувши кнопку реєстрації. Після завершення реєстрації ви перейдете на інформаційну панель, де побачите свій ключ API. Приладова панель повинна виглядати як на малюнку нижче. Я приховав свій ключ API з міркувань безпеки.

У кожному запиті API, який ви робите, вам потрібно буде надати цей ключ як заголовок запиту. Незабаром ви побачите, як це можна зробити.

Створивши обліковий запис techukraine.net і встановивши PHP, ми можемо розпочати створення проекту.

Створення папки проекту

Спочатку створіть папку, де ми будемо зберігати файли проекту. Після цього створіть наступні файли

  • .env
  • with_curl.php
  • with_file_get_contents.php
  • with_guzzle.php

Після цього виконайте таку команду, щоб встановити розширення vlucas/phpdotenv і guzzlehttp/guzzle

composer require vlucas/phpdotenv guzzlehttp/guzzle

На цьому етапі папка вашого проекту має виглядати так:

  Виправте помилку Google Play Store під час перевірки оновлень

Тепер відкрийте файл .env і додайте наступний рядок коду, замінивши на ваш фактичний ключ API з інформаційної панелі techukraine.net:

API_KEY=<your-api-key>

Використання file_get_contents()

Перший метод, який ми можемо використати для створення HTTP-запитів, це виклик функції file_get_contents(), вбудованої в PHP. Сигнатура функції file_get_contents() така:

file_get_contents(path, include_path, context)

Хоча цей метод часто використовується для читання вмісту файлу в локальному сховищі, ми можемо використовувати його для читання веб-ресурсу, наприклад даних, повернутих кінцевою точкою API.

Тепер, щоб почати, відкрийте файл with_file_get_contents.php і додайте шаблонний код PHP.

<?php
   // all the code to be inserted here
?>

Далі ми можемо розпочати завантаження розширень. Додайте наступний рядок коду до свого файлу

require_once('vendor/autoload.php');

Далі ми можемо завантажити наші змінні середовища, які включають ключ API

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Тоді ми можемо визначити корисне навантаження. Це будуть дані, які ми надішлемо як частину тіла запиту

$payload = json_encode([
    "url" => "https://www.google.com", 
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Ми створили змінну корисного навантаження та призначили її рядку JSON, який містить url, proxyCountry і followRedirect як властивості.

Властивість url визначає веб-сторінку, час завантаження якої ми хочемо перевірити.

Проксі-країна – це розташування сервера, який ми хочемо використати для надсилання запиту. У цьому випадку ми використовуємо сервер США, але ви можете вибрати з Індії, Китаю, Великобританії та Франції. Ви можете прочитати документацію для отримання додаткової інформації.

Потім followRedirect визначає, чи повинен проксі-сервер виконувати будь-які перенаправлення та вимірювати час відповіді остаточної відповіді чи першого перенаправлення.

Після цього ми можемо створити параметри, які налаштують наш запит, додавши цей код:

$options = [
    "http" => [
        "method" => "POST",
        "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
        "content" => $payload
    ] 
];

Роблячи це, ми створили об’єкт параметрів, який визначає, що наш HTTP-метод – це POST, і ми маємо заголовок, який визначає дві властивості: тип вмісту як JSON і x-api-key як ключ API, який ви вказали в .env і було завантажено як змінну середовища.

Далі ми можемо зробити запит, створивши потік, у якому будуть записані наші параметри:

$context = stream_context_create($options);

Далі ми викликаємо метод file_get_contents(), щоб зробити запит і зберегти відповідь як змінну.

$response = file_get_contents("https://api.techukraine.net.com/loadtime", false, $context);

Ми зробили запит на https://api.techukraine.net.com/loadtime. Помилка каже PHP не використовувати шлях. І ми передаємо створений нами контекст методу.

  Як додати наклейки на головний екран iPhone

Щоб відобразити відповідь, ми використаємо вихідні дані таким чином.

echo "Loadtime: " . json_decode($response)->data->total . "n";

Наприкінці цього ваш файл має виглядати так:

<?php
    require_once('vendor/autoload.php');

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();

    $payload = json_encode([
        "url" => "https://www.google.com", 
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $options = [
        "http" => [
            "method" => "POST",
            "header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
            "content" => $payload
        ] 
    ];

    $context = stream_context_create($options);

    $response = file_get_contents("https://api.techukraine.net.com/loadtime", false, $context);

    echo "Loadtime: " . json_decode($response)->data->total . "n";
?>

Коли ви запускаєте файл за допомогою такої команди:

php with_file_get_contents.php

Ви отримаєте наступний результат

Loadtime: 81

Використання cURL

cURL — це утиліта командного рядка, яка використовується для виконання запитів URL-адрес на стороні клієнта. У PHP його можна використовувати за допомогою утиліти php-curl. Щоб почати використовувати його, відкрийте файл with_curl.php і напишіть шаблонний PHP

<?php
    // all new code will be written here
?>

Тоді давайте імпортуємо розширення та завантажимо змінну середовища API_KEY, визначену у файлі .env

require_once('vendor/autoload.php');

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Далі ми створимо змінну для зберігання заголовків нашого об’єкта у вигляді масиву, де кожен окремий елемент у масиві є окремим заголовком.

$header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];

Ми визначили два заголовки: один для типу вмісту та один для ключа API.

Потім ми можемо визначити тіло запиту.

$body = json_encode([
    "url" => "google.com",
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Після цього ми можемо створити сеанс curl за допомогою функції curl_init(). Ми можемо передати URL-адресу, до якої хочемо зробити запит, як аргумент для виклику функції.

$ch = curl_init("https://api.techukraine.net.com/loadtime");

Тепер ми можемо об’єднати все разом, визначивши заголовок і тіло як параметри сеансу. Для цього ми будемо використовувати функцію curl_setopt_array().

curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => $header,
    CURLOPT_POSTFIELDS => $body
]);

Щоб зробити запит, ми викличемо функцію curl_exec().

$response = curl_exec($ch);

Ми зберегли відповідь у змінній $response, тому ми можемо закрити сеанс, щоб звільнити системні ресурси, які використовуються сеансом.

curl_close($ch);

Нарешті, ми можемо вивести відповідь на екран за допомогою var_dump.

var_dump($response);

Зрештою, ваш файл сценарію має виглядати так

<?php
    require_once('vendor/autoload.php');

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();

    $header = ["Content-type: application/json", "x-api-key: " . $_ENV['API_KEY']];

    $body = json_encode([
        "url" => "google.com",
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $ch = curl_init("https://api.techukraine.net.com/loadtime");

    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST => "POST",
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_POSTFIELDS => $body
    ]);

    $response = curl_exec($ch);

    curl_close($ch);

    var_dump($response);
?>

Коли ми запускаємо сценарій за допомогою php with_curl.php, ви маєте отримати такий результат:

{"timestamp":1666083632547,"apiStatus":"success","apiCode":200,"meta":{"url":"google.com","followRedirect":true,"redirectedURL":"https://www.google.com/?gws_rd=ssl","test":{"id":"d20h1hb409qbfwm0g534l51asugpi5hl"}},"data":{"dns":12,"connect":17,"tls":6,"send":21,"wait":110,"total":114}}bool(true)

Запит було виконано успішно, і API відповів даними JSON0. Ви можете використовувати ці дані як завгодно.

  Як налаштувати групи за допомогою Google Assistant

З Guzzle

В останній частині цього уроку ми будемо використовувати Guzzle для написання сценарію. Як завжди, ми починаємо з того, що вставляємо шаблон PHP у with_guzzle.php

<?php
    // all the code will go here
?>

Потім ми можемо імпортувати розширення та Guzzle Client і Request Objects і завантажувати змінні середовища.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Далі ми можемо завантажити змінні середовища.

$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();

Після цього ми можемо створити екземпляр HTTP-клієнта Guzzle

$client = new GuzzleHttpClient();

Потім ми можемо приступити до створення заголовків для нашого запиту

$headers = [
    'x-api-key' => $_ENV['API_KEY'],
    'Content-Type' => 'application/json'
];

Далі ми можемо визначити тіло запиту

$body = json_encode([
    "url" => "google.com",
    "proxyCountry" => "us",
    "followRedirect" => true
]);

Потім ми можемо зробити запит, створивши екземпляр класу Request і передавши URL-адресу кінцевої точки API, заголовок і тіло.

$request = new Request('POST', 'https://api.techukraine.net.com/loadtime', $headers, $body);

Тоді ми можемо надіслати запит, додавши цей рядок коду:

$response = $client->sendAsync($request)->wait();

Після того, як запит буде надіслано, ми можемо отримати його тіло наступним чином

$response_body = $response->getBody();

Зрештою, ми можемо декодувати відповідь JSON і роздрукувати час завантаження

echo "Loadtime: " . json_decode($response_body)->data->total . "n";

Отже, в кінцевому підсумку файл повинен виглядати так:

<?php
    require_once('vendor/autoload.php');

    use GuzzleHttpClient;
    use GuzzleHttpPsr7Request;

    $dotenv = DotenvDotenv::createImmutable(__DIR__);
    $dotenv->load();
    

    $client = new GuzzleHttpClient();

    $headers = [
        'x-api-key' => $_ENV['API_KEY'],
        'Content-Type' => 'application/json'
    ];

    $body = json_encode([
        "url" => "google.com",
        "proxyCountry" => "us",
        "followRedirect" => true
    ]);

    $request = new Request('POST', 'https://api.techukraine.net.com/loadtime', $headers, $body);

    $response = $client->sendAsync($request)->wait();

    $response_body = $response->getBody();

    echo "Loadtime: " . json_decode($response_body)->data->total . "n";
?>

І коли ви виконуєте сценарій за допомогою такої команди:

$php with_guzzle.php

І ви побачите відповідь:

Loadtime: 130

Висновок

У цій статті ми розглянули різні клієнти, які ви можете використовувати під час створення проекту PHP, для якого потрібен techukraine.net API.

У той час як сценарії в цьому проекті використовують командний рядок як основну форму виведення, реальні проекти можуть представити відповідь на веб-сторінці або записати її у файл. Приклади сценаріїв у цій статті були простими, але вони демонструють основні концепції використання techukraine.net API. Щоб використовувати різні API, ви можете змінити кінцеву точку та передати різні параметри в тілі запиту.

Вас також може зацікавити, як використовувати techukraine.net DNS Lookup API у Javascript.