Hoe de epcdream.nl API te gebruiken met PHP-clients

In deze handleiding gaan we door de verschillende PHP-clients die u kunt gebruiken om verbinding te maken met de epcdream.nl API.

In het bijzonder behandelen we het gebruik van de epcdream.nl API met de file_get_contents-functie, Guzzle, HTTPful en Symfony’s HTTPS-client.

Wat is de epcdream.nl-API?

epcdream.nl biedt een set gratis tools die u kunt gebruiken om de prestaties van uw website te controleren. Deze tools omvatten een analyse van verbroken koppelingen, tijd om te laden en een DNS-checker. Deze tools zijn online toegankelijk via de webinterface of de API.

De API is gebaseerd op HTTP en is toegankelijk vanuit elke programmeertaal met een HTTP-clientbibliotheek. De API heeft een royale gratis laag die u kunt gaan gebruiken zonder dat u betalingsinformatie hoeft te verstrekken.

Wat gaan we bouwen

We zullen een script schrijven, uitvoerbaar vanaf de opdrachtregel, dat berekent hoe lang het duurt om de Google-website te laden en af ​​te drukken naar de terminal. We zullen dit eenvoudige programma implementeren met behulp van verschillende PHP HTTP-clients om te demonstreren hoe het gebruik van de API eruit ziet.

In het bijzonder gaan we de ingebouwde functies gebruiken – file_get_contents() en php_curl, en de extensie Guzzle PHP. Hoe eenvoudig deze voorbeelden ook lijken, ze demonstreren de kernconcepten van het gebruik van de epcdream.nl API.

Vereisten

Om dit te kunnen volgen, moet u PHP van tevoren kennen en op uw computer hebben geïnstalleerd. Bovendien hebt u Composer nodig om extensies te beheren.

Ten slotte heb je ook een teksteditor nodig om code in te schrijven. In mijn geval ga ik Visual Studio Code gebruiken, een populaire open-source teksteditor van Microsoft. U kunt het downloaden van de Visual Studio Code-website.

epcdream.nl API-overzicht

De epcdream.nl API heeft verschillende eindpunten, afhankelijk van wat u wilt doen. De volledige lijst met eindpunten en de bijbehorende documentatie is te vinden op de documentatiepagina.

Een epcdream.nl-account aanmaken

Om aan de slag te gaan met het gebruik van de API, moet u een account maken door naar de API-bestemmingspagina te gaan en op de aanmeldingsknop te klikken. Nadat de aanmelding is voltooid, wordt u naar het dashboard gebracht, waar u uw API-sleutel ziet. Het dashboard zou moeten zijn zoals op de onderstaande afbeelding. Ik heb om veiligheidsredenen mijn API-sleutel uitgeschakeld.

In elk API-verzoek dat u doet, moet u deze sleutel als verzoekheader opgeven. Hoe u dit kunt doen, zult u binnenkort zien.

Met een epcdream.nl-account aangemaakt en PHP geïnstalleerd, kunnen we beginnen met het maken van het project.

De projectmap maken

Maak eerst een map waarin we de projectbestanden zullen opslaan. Maak daarna de volgende bestanden:

  • .env
  • with_curl.php
  • with_file_get_contents.php
  • with_guzzle.php
  Fix PS4-controller maakt geen verbinding met console

Voer daarna de volgende opdracht uit om de vlucas/phpdotenv- en guzzlehttp/guzzle-extensies te installeren:

composer require vlucas/phpdotenv guzzlehttp/guzzle

Op dit punt zou uw projectmap er als volgt uit moeten zien:

Open nu het .env-bestand en voeg de volgende regel code toe, waarbij u vervangt door uw werkelijke API-sleutel van het epcdream.nl-dashboard:

API_KEY=<your-api-key>

file_get_contents() gebruiken

De eerste methode die we zouden kunnen gebruiken om HTTP-verzoeken te doen, is door de functie file_get_contents() aan te roepen die in PHP is ingebouwd. De functiehandtekening van de functie file_get_contents() is als volgt:

file_get_contents(path, include_path, context)

Hoewel de methode vaak wordt gebruikt om de inhoud van een bestand in lokale opslag te lezen, kunnen we deze ook gebruiken om een ​​webresource te lezen, zoals gegevens die worden geretourneerd door een API-eindpunt.

Om nu aan de slag te gaan, opent u de with_file_get_contents.php en voegt u de standaard PHP-code toe.

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

Vervolgens kunnen we aan de slag met het laden van extensies. Voeg de volgende regel code toe aan uw bestand

require_once('vendor/autoload.php');

Vervolgens kunnen we onze omgevingsvariabelen laden, waaronder de API-sleutel

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

Vervolgens kunnen we de payload definiëren. Dit zijn gegevens die we zullen verzenden als onderdeel van de verzoekinstantie

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

We hebben een payload-variabele gemaakt en deze toegewezen aan een JSON-tekenreeks die de url, proxyCountry en followRedirect als eigenschappen bevat.

De eigenschap url specificeert de webpagina waarvan we de laadtijd willen controleren.

De proxyCountry is de locatie van de server die we willen gebruiken om het verzoek in te dienen. In dit geval gebruiken we de VS-server, maar u kunt kiezen uit India, China, het VK en Frankrijk. U kunt de documentatie lezen voor meer details.

FollowRedirect geeft vervolgens aan of de proxyserver eventuele omleidingen moet volgen en de reactietijd van de laatste reactie of de eerste omleiding moet meten.

Daarna kunnen we opties creëren die ons verzoek configureren door deze code toe te voegen:

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

Door dit te doen, hebben we een options-object gemaakt dat specificeert dat onze HTTP-methode POST is, en we hebben een header die twee eigenschappen specificeert, het inhoudstype als JSON en de x-api-key als de API-sleutel die u hebt opgegeven in de .env-bestand en is geladen als een omgevingsvariabele.

Vervolgens kunnen we het verzoek indienen door een stream te maken waar onze opties naar worden geschreven:

$context = stream_context_create($options);

Vervolgens roepen we de methode file_get_contents() aan om het verzoek te doen en het antwoord op te slaan als een variabele.

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

We hebben het verzoek ingediend bij https://api.epcdream.nl.com/loadtime. De false vertelt PHP het pad niet te gebruiken. En we geven de context die we hebben gemaakt door aan de methode.

  Hoe u uw Spotify Wrapped 2020 kunt vinden

Om het antwoord weer te geven, gebruiken we de uitvoer als volgt.

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

Aan het einde hiervan zou uw bestand er als volgt uit moeten zien:

<?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.epcdream.nl.com/loadtime", false, $context);

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

Wanneer u het bestand uitvoert met de volgende opdracht:

php with_file_get_contents.php

U krijgt de volgende uitvoer:

Loadtime: 81

cURL . gebruiken

cURL is een opdrachtregelprogramma dat wordt gebruikt om URL-verzoeken aan de clientzijde te doen. In PHP kan het worden gebruikt met behulp van het hulpprogramma php-curl. Om het te gebruiken, open je het with_curl.php bestand en schrijf je de standaardtekst PHP

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

Laten we dan extensies importeren en de omgevingsvariabele API_KEY laden die is gedefinieerd in het .env-bestand

require_once('vendor/autoload.php');

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

Vervolgens zullen we een variabele maken om de headers van ons object op te slaan als een array waarbij elk afzonderlijk element in de array een specifieke header is.

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

We hebben twee headers gedefinieerd, één voor het inhoudstype en één voor de API-sleutel.

Vervolgens kunnen we de hoofdtekst van het verzoek definiëren.

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

Hierna kunnen we een curl-sessie maken met behulp van de curl_init()-functie. We kunnen de URL waarnaar we het verzoek willen doen, doorgeven als argument voor de functieaanroep.

$ch = curl_init("https://api.epcdream.nl.com/loadtime");

Nu kunnen we alles samenvoegen door de header en body te definiëren als opties voor de sessie. Hiervoor gebruiken we de curl_setopt_array() functie

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

Om het verzoek te doen, zullen we de functie curl_exec() aanroepen

$response = curl_exec($ch);

We hebben het antwoord opgeslagen in de variabele $respons, zodat we de sessie kunnen sluiten om systeembronnen vrij te maken die door de sessie worden gebruikt.

curl_close($ch);

Ten slotte kunnen we het antwoord op het scherm afdrukken met var_dump.

var_dump($response);

Uiteindelijk zou je scriptbestand er zo uit moeten zien

<?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.epcdream.nl.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);
?>

Wanneer we het script uitvoeren met php with_curl.php, zou je de volgende output moeten krijgen:

{"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)

Het verzoek is voltooid en de API heeft gereageerd met JSON0-gegevens. U kunt deze gegevens gebruiken zoals u wilt.

  Hoe beheert u uw Audible-account?

Met Guzzle

In het laatste deel van deze tutorial zullen we Guzzle gebruiken om het script te schrijven. Zoals altijd beginnen we met het invoegen van de PHP-boilerplate in de with_guzzle.php

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

Vervolgens kunnen we extensies en de Guzzle Client en Request Objects importeren en omgevingsvariabelen laden.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Vervolgens kunnen we omgevingsvariabelen laden.

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

Daarna kunnen we een Guzzle HTTP-client instantiëren

$client = new GuzzleHttpClient();

Dan kunnen we doorgaan met het maken van headers voor ons verzoek

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

Vervolgens kunnen we de hoofdtekst van het verzoek definiëren

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

We kunnen vervolgens het verzoek indienen door de klasse Request te instantiëren en de URL, de header en de body van het API-eindpunt door te geven.

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

Dan kunnen we het verzoek verzenden door deze regel code toe te voegen:

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

Nadat het verzoek is verzonden, kunnen we het hoofdgedeelte van het verzoek als volgt ontvangen:

$response_body = $response->getBody();

Uiteindelijk kunnen we het JSON-antwoord decoderen en de laadtijd afdrukken

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

Dus uiteindelijk zou het bestand er als volgt uit moeten zien:

<?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.epcdream.nl.com/loadtime', $headers, $body);

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

    $response_body = $response->getBody();

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

En wanneer u het script uitvoert met de volgende opdracht:

$php with_guzzle.php

En je ziet het antwoord:

Loadtime: 130

Conclusie

In dit artikel hebben we de verschillende clients doorgenomen die u mogelijk wilt gebruiken bij het maken van een PHP-project waarvoor de epcdream.nl-API vereist is.

Terwijl de scripts in dit project de opdrachtregel gebruiken als de primaire vorm van uitvoer, kunnen echte projecten het antwoord op een webpagina presenteren of naar een bestand schrijven. De voorbeeldscripts in dit artikel waren eenvoudig, maar ze demonstreren de kernconcepten van het gebruik van de epcdream.nl API. Om verschillende API’s te gebruiken, kunt u het eindpunt wijzigen en verschillende opties doorgeven in de aanvraagtekst.

Mogelijk bent u ook geïnteresseerd in het gebruik van epcdream.nl DNS Lookup API in Javascript.

gerelateerde berichten