Πώς να χρησιμοποιήσετε το grtechpc.org API με πελάτες PHP

Σε αυτόν τον οδηγό, θα εξετάσουμε τους διαφορετικούς πελάτες PHP που μπορείτε να χρησιμοποιήσετε για να συνδεθείτε στο grtechpc.org API.

Συγκεκριμένα, θα καλύψουμε χρησιμοποιώντας το grtechpc.org API με τη συνάρτηση file_get_contents, το Guzzle, το HTTPful και τον πελάτη HTTPS της Symfony.

Τι είναι το grtechpc.org API;

Το grtechpc.org παρέχει ένα σύνολο δωρεάν εργαλείων που μπορείτε να χρησιμοποιήσετε για να παρακολουθείτε την απόδοση του ιστότοπού σας. Αυτά τα εργαλεία περιλαμβάνουν έναν αναλυτή σπασμένων συνδέσμων, χρόνο φόρτωσης και έλεγχο DNS. Αυτά τα εργαλεία είναι προσβάσιμα στο διαδίκτυο μέσω της διεπαφής ιστού ή του API.

Το API βασίζεται σε HTTP και μπορεί να προσπελαστεί από οποιαδήποτε γλώσσα προγραμματισμού με βιβλιοθήκη πελάτη HTTP. Το API διαθέτει ένα γενναιόδωρο δωρεάν επίπεδο που μπορείτε να ξεκινήσετε να χρησιμοποιείτε χωρίς να χρειάζεται να παρέχετε πληροφορίες πληρωμής.

Αυτό που πρόκειται να χτίσουμε

Θα γράψουμε ένα σενάριο, εκτελέσιμο από τη γραμμή εντολών, το οποίο θα υπολογίσει πόσο χρόνο χρειάζεται για να φορτωθεί ο ιστότοπος της Google και να εκτυπωθούν στο τερματικό. Θα εφαρμόσουμε αυτό το απλό πρόγραμμα χρησιμοποιώντας διαφορετικούς πελάτες HTTP PHP για να δείξουμε πώς μοιάζει η χρήση του API.

Συγκεκριμένα, θα χρησιμοποιήσουμε τις ενσωματωμένες συναρτήσεις – file_get_contents() και php_curl και την επέκταση Guzzle PHP. Όσο απλά και αν φαίνονται αυτά τα παραδείγματα, καταδεικνύουν τις βασικές έννοιες της χρήσης του grtechpc.org API.

Προαπαιτούμενα

Για να ακολουθήσετε, θα πρέπει να γνωρίζετε εκ των προτέρων την PHP και να την έχετε εγκαταστήσει στον υπολογιστή σας. Επιπλέον, θα χρειαστείτε το Composer για τη διαχείριση των επεκτάσεων.

Τέλος, θα χρειαστείτε επίσης ένα πρόγραμμα επεξεργασίας κειμένου για να γράψετε κώδικα. Στην περίπτωσή μου, θα χρησιμοποιήσω το Visual Studio Code, ένα δημοφιλές πρόγραμμα επεξεργασίας κειμένου ανοιχτού κώδικα από τη Microsoft. Μπορείτε να το κατεβάσετε από τον ιστότοπο του Visual Studio Code.

Επισκόπηση grtechpc.org API

Το grtechpc.org API έχει διαφορετικά τελικά σημεία ανάλογα με το τι θέλετε να κάνετε. Η πλήρης λίστα των τελικών σημείων και η σχετική τεκμηρίωσή τους μπορείτε να βρείτε στη σελίδα τεκμηρίωσης.

Δημιουργία λογαριασμού grtechpc.org

Για να ξεκινήσετε να χρησιμοποιείτε το API, θα χρειαστεί να δημιουργήσετε έναν λογαριασμό μεταβαίνοντας στη σελίδα προορισμού του API και κάνοντας κλικ στο κουμπί εγγραφής. Αφού ολοκληρωθεί η εγγραφή, θα μεταφερθείτε στον πίνακα ελέγχου, όπου θα δείτε το κλειδί API σας. Το ταμπλό πρέπει να είναι όπως στην παρακάτω εικόνα. Έχω μαυρίσει το κλειδί API για λόγους ασφαλείας.

Σε κάθε αίτημα API που κάνετε, θα πρέπει να παρέχετε αυτό το κλειδί ως κεφαλίδα αιτήματος. Σύντομα, θα δείτε πώς μπορεί να γίνει αυτό.

  Πώς να μετακινήσετε τα ληφθέντα παιχνίδια Nintendo Switch σε κάρτα microSD

Με τη δημιουργία ενός λογαριασμού grtechpc.org και την εγκατάσταση της PHP, μπορούμε να ξεκινήσουμε τη δημιουργία του έργου.

Δημιουργία του φακέλου έργου

Αρχικά, δημιουργήστε έναν φάκελο όπου θα αποθηκεύσουμε τα αρχεία του έργου. Μετά από αυτό, δημιουργήστε τα ακόλουθα αρχεία

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

Μετά, εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε την επέκταση vlucas/phpdotenv και guzzlehttp/guzzle

composer require vlucas/phpdotenv guzzlehttp/guzzle

Σε αυτό το σημείο, ο φάκελος του έργου σας θα πρέπει να μοιάζει με αυτό:

Τώρα ανοίξτε το αρχείο .env και προσθέστε την ακόλουθη γραμμή κώδικα, αντικαθιστώντας το με το πραγματικό κλειδί API από τον πίνακα εργαλείων grtechpc.org:

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 του boilerplate.

<?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 καθορίζει την ιστοσελίδα της οποίας το χρόνο φόρτωσης θέλουμε να ελέγξουμε.

Το proxyCountry είναι η τοποθεσία του διακομιστή που θέλουμε να χρησιμοποιήσουμε για να υποβάλουμε το αίτημα. Σε αυτήν την περίπτωση, χρησιμοποιούμε τον διακομιστή των ΗΠΑ, αλλά μπορείτε να επιλέξετε από την Ινδία, την Κίνα, το Ηνωμένο Βασίλειο και τη Γαλλία. Μπορείτε να διαβάσετε την τεκμηρίωση για περισσότερες λεπτομέρειες.

Στη συνέχεια, το followRedirect καθορίζει εάν ο διακομιστής μεσολάβησης θα πρέπει να ακολουθεί τυχόν ανακατευθύνσεις και να μετράει τον χρόνο απόκρισης της τελικής απόκρισης ή της πρώτης ανακατεύθυνσης.

Στη συνέχεια, μπορούμε να δημιουργήσουμε επιλογές που θα διαμορφώσουν το αίτημά μας προσθέτοντας αυτόν τον κώδικα:

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

Κάνοντας αυτό, δημιουργήσαμε ένα αντικείμενο επιλογών που προσδιορίζει ότι η μέθοδος HTTP μας είναι POST και έχουμε μια κεφαλίδα που καθορίζει δύο ιδιότητες, τον τύπο περιεχομένου ως JSON και το κλειδί x-api ως κλειδί API που καθορίσατε στο .env και έχει φορτωθεί ως περιβαλλοντική μεταβλητή.

  12 πόροι για να μάθετε Python για αρχάριους

Στη συνέχεια, μπορούμε να υποβάλουμε το αίτημα δημιουργώντας μια ροή όπου οι επιλογές μας θα γραφτούν στο:

$context = stream_context_create($options);

Στη συνέχεια, καλούμε τη μέθοδο file_get_contents() για να κάνουμε το αίτημα και να αποθηκεύσουμε την απάντηση ως μεταβλητή.

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

Υποβάλαμε το αίτημα στη διεύθυνση https://api.grtechpc.org.com/loadtime. Το false λέει στην PHP να μην χρησιμοποιεί τη διαδρομή. Και περνάμε το πλαίσιο που δημιουργήσαμε στη μέθοδο.

Για να εμφανίσουμε την απόκριση, θα χρησιμοποιήσουμε την έξοδο ως εξής.

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.grtechpc.org.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 και γράψτε το boilerplate 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.grtechpc.org.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.grtechpc.org.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

Με το Guzzle

Στο τελευταίο μέρος αυτού του σεμιναρίου, θα χρησιμοποιήσουμε το Guzzle για να γράψουμε το σενάριο. Όπως πάντα, ξεκινάμε εισάγοντας το boilerplate PHP μέσα στο with_guzzle.php

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

Στη συνέχεια, μπορούμε να εισαγάγουμε επεκτάσεις και το Guzzle Client and Request Objects και να φορτώσουμε περιβαλλοντικές μεταβλητές.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Στη συνέχεια, μπορούμε να φορτώσουμε περιβαλλοντικές μεταβλητές.

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

Στη συνέχεια, μπορούμε να δημιουργήσουμε ένα πρόγραμμα-πελάτη Guzzle HTTP

$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.grtechpc.org.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.grtechpc.org.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 που θα απαιτεί το grtechpc.org API.

Ενώ τα σενάρια σε αυτό το έργο χρησιμοποιούν τη γραμμή εντολών ως την κύρια μορφή εξόδου, τα έργα του πραγματικού κόσμου θα μπορούσαν να παρουσιάσουν την απάντηση σε μια ιστοσελίδα ή να την γράψουν σε ένα αρχείο. Τα παραδείγματα σεναρίων σε αυτό το άρθρο ήταν απλά, αλλά δείχνουν τις βασικές έννοιες της χρήσης του grtechpc.org API. Για να χρησιμοποιήσετε διαφορετικά API, μπορείτε να αλλάξετε το τελικό σημείο και να μεταβιβάσετε διαφορετικές επιλογές στο σώμα αιτήματος.

Μπορεί επίσης να σας ενδιαφέρει πώς να χρησιμοποιήσετε το grtechpc.org DNS Lookup API σε Javascript.