Como usar a API etechpt.com com clientes PHP

Neste guia, veremos os diferentes clientes PHP que você pode usar para se conectar à API etechpt.com.

Especificamente, abordaremos o uso da API etechpt.com com a função file_get_contents, Guzzle, HTTPful e o cliente HTTPS do Symfony.

O que é a API etechpt.com?

etechpt.com fornece um conjunto de ferramentas gratuitas que você pode usar para monitorar o desempenho do seu site. Essas ferramentas incluem um analisador de links quebrados, tempo de carregamento e um verificador de DNS. Essas ferramentas podem ser acessadas online através da interface web ou da API.

A API é baseada em HTTP e pode ser acessada de qualquer linguagem de programação com uma biblioteca cliente HTTP. A API tem um nível gratuito generoso que você pode começar a usar sem precisar fornecer informações de pagamento.

O que vamos construir

Vamos escrever um script, executável a partir da linha de comando, que calculará quanto tempo leva para carregar o site do Google e imprimi-los no terminal. Implementaremos este programa simples usando diferentes clientes PHP HTTP para demonstrar como é o uso da API.

Especificamente, vamos usar as funções internas – file_get_contents() e php_curl, e a extensão Guzzle PHP. Por mais simples que esses exemplos possam parecer, eles demonstram os conceitos básicos do uso da API etechpt.com.

Pré-requisitos

Para acompanhar, você precisará conhecer o PHP de antemão e tê-lo instalado em seu computador. Além disso, você precisará do Composer para gerenciar extensões.

Por fim, você também precisará de um editor de texto para escrever código. No meu caso, usarei o Visual Studio Code, um editor de texto de código aberto popular da Microsoft. Você pode baixá-lo no site do Visual Studio Code.

Visão geral da API etechpt.com

A API etechpt.com tem endpoints diferentes dependendo do que você deseja fazer. A lista completa de terminais e sua documentação associada pode ser encontrada na página de documentação.

Criando uma conta etechpt.com

Para começar a usar a API, você precisará criar uma conta acessando a página de destino da API e clicando no botão de inscrição. Após a conclusão da inscrição, você será levado ao painel, onde verá sua chave de API. O painel deve ficar como na imagem abaixo. Eu apaguei minha chave de API por motivos de segurança.

Em cada solicitação de API que você fizer, você precisará fornecer essa chave como um cabeçalho de solicitação. Em breve, você verá como isso pode ser feito.

  Como encontrar voos baratos com o Google Flights

Com uma conta etechpt.com criada e PHP instalado, podemos começar a criar o projeto.

Criando a pasta do projeto

Primeiro, crie uma pasta onde armazenaremos os arquivos do projeto. Depois disso, crie os seguintes arquivos

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

Depois, execute o seguinte comando para instalar a extensão vlucas/phpdotenv e guzzlehttp/guzzle

composer require vlucas/phpdotenv guzzlehttp/guzzle

Neste ponto, a pasta do seu projeto deve estar assim:

Agora abra o arquivo .env e adicione a seguinte linha de código, substituindo pela sua chave de API real do painel etechpt.com:

API_KEY=<your-api-key>

Usando file_get_contents()

O primeiro método que podemos usar para fazer requisições HTTP é chamar a função file_get_contents() que está embutida no PHP. A assinatura da função da função file_get_contents() é a seguinte:

file_get_contents(path, include_path, context)

Embora o método seja frequentemente usado para ler o conteúdo de um arquivo no armazenamento local, podemos usá-lo para ler um recurso da Web, como dados retornados por um endpoint de API.

Agora, para começar, abra o arquivo with_get_contents.php e adicione o código PHP padrão.

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

Em seguida, podemos começar a carregar extensões. Adicione a seguinte linha de código ao seu arquivo

require_once('vendor/autoload.php');

Em seguida, podemos carregar nossas variáveis ​​ambientais, que incluem a chave da API

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

Então, podemos definir a carga útil. Esses serão os dados que enviaremos como parte do corpo da solicitação

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

Criamos uma variável de carga útil e a atribuímos a uma string JSON que contém o url, proxyCountry e followRedirect como propriedades.

A propriedade url especifica a página da Web cujo tempo de carregamento queremos verificar.

O proxyCountry é a localização do servidor que queremos usar para fazer a solicitação. Nesse caso, estamos usando o servidor dos EUA, mas você pode escolher entre Índia, China, Reino Unido e França. Você pode ler a documentação para obter mais detalhes.

Em seguida, followRedirect especifica se o servidor proxy deve seguir qualquer redirecionamento e medir o tempo de resposta da resposta final ou do primeiro redirecionamento.

Depois, podemos criar opções que configurarão nossa solicitação adicionando este código:

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

Ao fazer isso, criamos um objeto de opções que especifica que nosso método HTTP é POST, e temos um cabeçalho que especifica duas propriedades, o tipo de conteúdo como JSON e a chave x-api como a chave de API que você especificou no .env e foi carregado como uma variável de ambiente.

  Como definir uma data de expiração ao compartilhar arquivos no Google Drive

Em seguida, podemos fazer a solicitação criando um fluxo onde nossas opções serão gravadas:

$context = stream_context_create($options);

Em seguida, chamamos o método file_get_contents() para fazer a solicitação e armazenar a resposta como uma variável.

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

Fizemos a solicitação para https://api.etechpt.com.com/loadtime. O false diz ao PHP para não usar o caminho. E passamos o contexto que criamos para o método.

Para exibir a resposta, usaremos a saída da seguinte forma.

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

Ao final disso, seu arquivo deve ficar assim:

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

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

Ao executar o arquivo usando o seguinte comando:

php with_file_get_contents.php

Você obterá a seguinte saída

Loadtime: 81

Usando cURL

cURL é um utilitário de linha de comando usado para fazer solicitações de URL do lado do cliente. Em PHP, ele pode ser usado usando o utilitário php-curl. Para começar a usá-lo, abra o arquivo with_curl.php e escreva o PHP padrão

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

Então vamos importar as extensões e carregar a variável de ambiente API_KEY definida no arquivo .env

require_once('vendor/autoload.php');

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

Em seguida, criaremos uma variável para armazenar os cabeçalhos de nosso objeto como um array onde cada elemento individual no array é um cabeçalho específico.

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

Definimos dois cabeçalhos, um para o tipo de conteúdo e outro para a chave de API.

Em seguida, podemos definir o corpo da solicitação.

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

Depois disso, podemos criar uma sessão curl usando a função curl_init(). Podemos passar a URL para a qual queremos fazer a solicitação como um argumento para a chamada da função.

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

Agora podemos juntar tudo definindo o cabeçalho e o corpo como opções para a sessão. Para isso, usaremos a função curl_setopt_array()

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

Para fazer a solicitação, chamaremos a função curl_exec()

$response = curl_exec($ch);

Armazenamos a resposta na variável $response, para que possamos fechar a sessão para liberar recursos do sistema que estão sendo usados ​​pela sessão.

curl_close($ch);

Por fim, podemos imprimir a resposta na tela usando var_dump.

var_dump($response);

No final, seu arquivo de script deve ficar assim

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

Quando executamos o script usando php with_curl.php, você deve obter a seguinte saída:

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

A solicitação foi concluída com sucesso e a API respondeu com dados JSON0. Você pode usar esses dados como quiser.

  Como você desvincula uma conta Call of Duty

Com Guzzle

Na última parte deste tutorial, usaremos o Guzzle para escrever o script. Como sempre, começamos inserindo o clichê do PHP dentro do arquivo with_guzzle.php

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

Em seguida, podemos importar extensões e os objetos Guzzle Client e Request e carregar variáveis ​​ambientais.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Em seguida, podemos carregar variáveis ​​ambientais.

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

Depois, podemos instanciar um cliente HTTP Guzzle

$client = new GuzzleHttpClient();

Em seguida, podemos prosseguir para criar cabeçalhos para nossa solicitação

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

Em seguida, podemos definir o corpo da solicitação

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

Podemos então fazer a solicitação instanciando a classe Request e passando a URL, o cabeçalho e o corpo do endpoint da API.

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

Em seguida, podemos enviar a solicitação adicionando esta linha de código:

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

Uma vez que o pedido tenha sido enviado, podemos receber o corpo do pedido da seguinte forma

$response_body = $response->getBody();

No final, podemos decodificar a resposta JSON e imprimir o tempo de carregamento

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

Então, no final, o arquivo deve ficar assim:

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

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

    $response_body = $response->getBody();

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

E quando você executa o script usando o seguinte comando:

$php with_guzzle.php

E você verá a resposta:

Loadtime: 130

Conclusão

Neste artigo, analisamos os diferentes clientes que você pode usar ao criar um projeto PHP que exigirá a API etechpt.com.

Embora os scripts neste projeto usem a linha de comando como a principal forma de saída, os projetos do mundo real podem apresentar a resposta em uma página da Web ou gravá-la em um arquivo. Os scripts de exemplo neste artigo eram simples, mas demonstram os principais conceitos de uso da API etechpt.com. Para usar APIs diferentes, você pode alterar o endpoint e passar opções diferentes no corpo da solicitação.

Você também pode estar interessado em como usar a API de pesquisa de DNS etechpt.com em Javascript.