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.
Innholdsfortegnelse
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.
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
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.
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.
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.