Hvordan bruke tipsbilk.net API med PHP-klienter

I denne guiden vil vi gå gjennom de forskjellige PHP-klientene du kan bruke for å koble til tipsbilk.net API.

Spesifikt vil vi dekke bruk av tipsbilk.net API med file_get_contents-funksjonen, Guzzle, HTTPful og Symfonys HTTPS-klient.

Hva er tipsbilk.net API?

tipsbilk.net tilbyr et sett med gratisverktøy som du kan bruke til å overvåke ytelsen til nettstedet ditt. Disse verktøyene inkluderer en brutt koblingsanalysator, tid til å laste og en DNS-kontroller. Disse verktøyene kan nås online via nettgrensesnittet eller API.

API-en er basert på HTTP og kan nås fra et hvilket som helst programmeringsspråk med et HTTP-klientbibliotek. API-en har et generøst gratis nivå som du kan begynne å bruke uten å måtte oppgi betalingsinformasjon.

Det vi skal bygge

Vi vil skrive et skript, kjørbart fra kommandolinjen, som vil beregne hvor lang tid det tar å laste Google-nettstedet og skrive dem ut til terminalen. Vi vil implementere dette enkle programmet ved å bruke forskjellige PHP HTTP-klienter for å demonstrere hvordan bruk av API ser ut.

Nærmere bestemt skal vi bruke de innebygde funksjonene – file_get_contents() og php_curl, og utvidelsen Guzzle PHP. Uansett hvor enkle disse eksemplene kan virke, demonstrerer de kjernekonseptene ved bruk av tipsbilk.net API.

Forutsetninger

For å følge med må du kunne PHP på forhånd og ha det installert på datamaskinen din. I tillegg trenger du Composer for å administrere utvidelser.

Til slutt trenger du også et tekstredigeringsprogram for å skrive kode i. I mitt tilfelle skal jeg bruke Visual Studio Code, en populær åpen kildekode-tekstredigerer fra Microsoft. Du kan laste den ned fra nettstedet til Visual Studio Code.

tipsbilk.net API-oversikt

tipsbilk.net API har forskjellige endepunkter avhengig av hva du vil gjøre. Den fullstendige listen over endepunkter og tilhørende dokumentasjon finner du på dokumentasjonssiden.

Opprette en tipsbilk.net-konto

For å komme i gang med å bruke API, må du opprette en konto ved å gå til API-landingssiden og klikke på registreringsknappen. Etter at registreringen er fullført, vil du bli tatt til dashbordet, hvor du vil se API-nøkkelen din. Dashbordet skal være som bildet nedenfor. Jeg har mørklagt API-nøkkelen min av sikkerhetsgrunner.

I hver API-forespørsel du gjør, må du oppgi denne nøkkelen som en forespørselsoverskrift. Om kort tid vil du se hvordan dette kan gjøres.

  Hvordan kansellerer du CBS på Roku

Med en tipsbilk.net-konto opprettet og PHP installert, kan vi begynne å lage prosjektet.

Oppretting av prosjektmappen

Lag først en mappe der vi skal lagre prosjektfilene. Deretter oppretter du følgende filer

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

Kjør deretter følgende kommando for å installere utvidelsen vlucas/phpdotenv og guzzlehttp/guzzle

composer require vlucas/phpdotenv guzzlehttp/guzzle

På dette tidspunktet skal prosjektmappen din se slik ut:

Åpne nå .env-filen og legg til følgende kodelinje, og bytt ut med din faktiske API-nøkkel fra tipsbilk.net-dashbordet:

API_KEY=<your-api-key>

Bruke file_get_contents()

Den første metoden vi kan bruke for å lage HTTP-forespørsler er å kalle file_get_contents()-funksjonen som er innebygd i PHP. Funksjonssignaturen til file_get_contents()-funksjonen er som følger:

file_get_contents(path, include_path, context)

Mens metoden ofte brukes til å lese innholdet i en fil i lokal lagring, kan vi bruke den til å lese en nettressurs, for eksempel data som returneres av et API-endepunkt.

Nå for å komme i gang, åpne with_file_get_contents.php og legg til PHP-koden.

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

Deretter kan vi komme i gang med å laste utvidelser. Legg til følgende kodelinje i filen din

require_once('vendor/autoload.php');

Deretter kan vi laste inn miljøvariablene våre, som inkluderer API-nøkkelen

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

Deretter kan vi definere nyttelasten. Dette vil være data vi sender som en del av forespørselsorganet

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

Vi har laget en nyttelastvariabel og tilordnet den til en JSON-streng som inneholder url, proxyCountry og followRedirect som egenskaper.

URL-egenskapen spesifiserer nettsiden hvis lastetid vi ønsker å sjekke.

ProxyCountry er plasseringen til serveren vi ønsker å bruke for å sende forespørselen. I dette tilfellet bruker vi USA-serveren, men du kan velge mellom India, Kina, Storbritannia og Frankrike. Du kan lese dokumentasjonen for mer informasjon.

Deretter spesifiserer followRedirect om proxy-serveren skal følge eventuelle omdirigeringer og måle responstiden til det endelige svaret eller den første omdirigeringen.

Etterpå kan vi lage alternativer som vil konfigurere forespørselen vår ved å legge til denne koden:

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

Ved å gjøre dette har vi laget et opsjonsobjekt som spesifiserer at HTTP-metoden vår er POST, og vi har en overskrift som spesifiserer to egenskaper, innholdstypen som JSON og x-api-nøkkelen som API-nøkkelen som du spesifiserte i .env-fil og har blitt lastet inn som en miljøvariabel.

  8 beste ferie-API-er for å bygge appen din rundt reiser

Deretter kan vi sende inn forespørselen ved å opprette en strøm der alternativene våre vil bli skrevet til:

$context = stream_context_create($options);

Deretter kaller vi file_get_contents()-metoden for å lage forespørselen og lagre svaret som en variabel.

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

Vi sendte forespørselen til https://api.tipsbilk.net.com/loadtime. Den falske forteller PHP om ikke å bruke banen. Og vi overfører konteksten vi skapte til metoden.

For å vise svaret bruker vi utdataene som følger.

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

På slutten av dette skal filen din se slik ut:

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

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

Når du kjører filen med følgende kommando:

php with_file_get_contents.php

Du vil få følgende utgang

Loadtime: 81

Bruker cURL

cURL er et kommandolinjeverktøy som brukes til å sende URL-forespørsler på klientsiden. I PHP kan den brukes ved å bruke php-curl-verktøyet. For å begynne å bruke den, åpne with_curl.php-filen og skriv kjeleplaten PHP

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

La oss så importere utvidelser og laste API_KEY miljøvariabelen definert i .env-filen

require_once('vendor/autoload.php');

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

Deretter vil vi lage en variabel for å lagre overskriftene til objektet vårt som en matrise der hvert enkelt element i matrisen er en spesifikk overskrift.

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

Vi definerte to overskrifter, en for innholdstypen og en for API-nøkkelen.

Deretter kan vi definere innholdet i forespørselen.

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

Etter dette kan vi lage en krølleøkt ved å bruke curl_init()-funksjonen. Vi kan sende inn URL-en vi ønsker å sende forespørselen til som et argument til funksjonskallet.

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

Nå kan vi sette alt sammen ved å definere overskriften og brødteksten som alternativer for økten. For dette vil vi bruke curl_setopt_array() funksjonen

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

For å gjøre forespørselen, vil vi kalle curl_exec() funksjonen

$response = curl_exec($ch);

Vi har lagret svaret i $respons-variabelen, slik at vi kan lukke økten for å frigjøre systemressurser som brukes av økten.

curl_close($ch);

Til slutt kan vi skrive ut svaret på skjermen ved å bruke var_dump.

var_dump($response);

Til slutt skal skriptfilen din se slik ut

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

Når vi kjører skriptet med php with_curl.php, bør du få følgende utdata:

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

Forespørselen ble fullført, og API-en svarte med JSON0-data. Du kan bruke disse dataene som du vil.

  11 beste AWS-overvåkingsverktøy i 2022

Med Guzzle

I den siste delen av denne opplæringen vil vi bruke Guzzle til å skrive manuset. Som alltid starter vi med å sette inn PHP kjeleplate på innsiden av with_guzzle.php

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

Deretter kan vi importere utvidelser og Guzzle Client og Request Objects og laste inn miljøvariabler.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Deretter kan vi laste inn miljøvariabler.

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

Etterpå kan vi instansiere en Guzzle HTTP-klient

$client = new GuzzleHttpClient();

Deretter kan vi fortsette å lage overskrifter for forespørselen vår

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

Deretter kan vi definere innholdet i forespørselen

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

Vi kan deretter sende inn forespørselen ved å instansiere Request-klassen og sende inn API-endepunkts-URL, header og body.

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

Deretter kan vi sende forespørselen ved å legge til denne kodelinjen:

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

Når forespørselen er sendt, kan vi motta forespørselens brødtekst som følger

$response_body = $response->getBody();

Til slutt kan vi dekode JSON-svaret og skrive ut lastetiden

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

Så til slutt skal filen se slik ut:

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

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

    $response_body = $response->getBody();

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

Og når du kjører skriptet ved å bruke følgende kommando:

$php with_guzzle.php

Og du vil se svaret:

Loadtime: 130

Konklusjon

I denne artikkelen gikk vi gjennom de forskjellige klientene du kanskje vil bruke når du oppretter et PHP-prosjekt som vil kreve tipsbilk.net API.

Mens skriptene i dette prosjektet bruker kommandolinjen som den primære formen for utdata, kan virkelige prosjekter presentere svaret på en nettside eller skrive det til en fil. Eksempelskriptene i denne artikkelen var enkle, men de demonstrerer kjernekonseptene ved bruk av tipsbilk.net API. For å bruke forskjellige APIer kan du endre endepunktet og sende inn forskjellige alternativer i forespørselsteksten.

Du kan også være interessert i hvordan du bruker tipsbilk.net DNS Lookup API i Javascript.