如何在PHP客户端中使用Geekflare API
在本指南中,我们将介绍您可以使用的不同PHP客户端来连接到Geekflare API。
具体而言,我们将介绍如何使用file_get_contents
函数、Guzzle、HTTPful和Symfony的HTTPS客户端来使用Geekflare API。
什么是Geekflare API?
Geekflare提供了一组免费工具,您可以使用这些工具监控您的网站性能。这些工具包括一个链接分析器、加载时间和一个DNS checker。可以通过web界面或the API在线访问这些工具。
该API基于HTTP,可以通过任何带有HTTP客户端库的编程语言访问。API具有慷慨的免费层,您可以在无需提供付款信息的情况下开始使用。
我们要构建什么
我们将编写一个可以从命令行执行的脚本,该脚本将计算加载Google网站所需的时间,并将其打印到终端。我们将使用不同的PHP HTTP客户端来实现这个简单的程序,以演示如何使用API。
具体而言,我们将使用内置函数-file_get_contents()
和php_curl
扩展以及Guzzle PHP扩展。尽管这些示例可能看起来很简单,但它们演示了使用Geekflare API的核心概念。
先决条件
要跟随本指南,您需要事先了解PHP,并在计算机上安装PHP。此外,您还需要来管理扩展。
最后,您还需要一个文本编辑器来编写代码。在我的例子中,我将使用Visual Studio Code,这是一个流行的开源文本编辑器,由Microsoft提供。您可以从Visual Studio Code website下载它。
Geekflare API概述
Geekflare API根据您想要做什么,有不同的API端点。可以在documentation page上找到端点的完整列表以及相关的文档。
创建Geekflare帐户
要开始使用API,您需要访问API landing page,然后点击注册按钮创建一个帐户。注册完成后,您将被带到仪表板,您将在仪表板上看到您的API密钥。仪表板应该像下图一样。出于安全原因,我将我的API密钥涂黑。
在您发出的每个API请求中,您都需要提供此密钥作为请求头。您将很快看到如何完成此操作。
有了Geekflare帐户和安装了PHP,我们可以开始创建项目。
创建项目文件夹
首先,创建一个文件夹来存储项目文件。然后,创建以下文件
.env
with_curl.php
with_file_get_contents.php
with_guzzle.php
之后,运行以下命令来安装vlucas/phpdotenv
和guzzlehttp/guzzle
扩展
composer require vlucas/phpdotenv guzzlehttp/guzzle
此时,您的项目文件夹应如下所示:
现在打开.env
文件,并添加以下代码行,将替换为您从Geekflare仪表板获得的实际API密钥:
API_KEY=
使用file_get_contents()
我们可以使用file_get_contents()
函数发出HTTP请求的第一种方法。该函数的函数签名如下:
file_get_contents(path, include_path, context)
虽然该方法通常用于读取本地存储的文件内容,但我们也可以使用它来读取Web资源,例如API端点返回的数据。
现在开始,打开with_file_get_contents.php
文件并添加PHP的样板代码。
接下来,我们可以开始加载扩展。在您的文件中添加以下代码行
require_once('vendor/autoload.php');
接下来,我们可以加载我们的环境变量,其中包括API密钥
$dotenv = DotenvDotenv::createImmutable(__DIR__);
$dotenv->load();
然后,我们可以定义负载。这将是我们作为请求体的一部分发送的数据
$payload = json_encode([
"url" => "https://www.google.com",
"proxyCountry" => "us",
"followRedirect" => true
]);
我们创建了一个负载变量,并将其分配为包含url
,proxyCountry
和followRedirect
作为属性的JSON字符串。
url
属性指定了我们要检查加载时间的网页。
proxyCountry
是我们想要使用的服务器的位置。在这种情况下,我们使用美国服务器,但您可以选择印度、中国、英国和法国等国家。您可以read the documentation了解更多详细信息。
然后,followRedirect
指定代理服务器是否应遵循任何重定向并测量最终响应或第一次重定向的响应时间。
之后,我们可以创建配置我们请求的选项,添加以下代码:
$options = [
"http" => [
"method" => "POST",
"header" => array("Content-Type: application/json", "x-api-key : " . $_ENV['API_KEY']),
"content" => $payload
]
];
通过这样做,我们创建了一个选项对象,指定了我们的HTTP方法为POST,并且我们有一个标头,其中指定了两个属性,内容类型为JSON,x-api-key
为您在.env
文件中指定的API密钥,并已加载为环境变量。
接下来,我们可以创建一个流,其中我们的选项将被写入:
$context = stream_context_create($options);
接下来,我们调用file_get_contents()
方法来进行请求,并将响应存储为变量。
$response = file_get_contents("https://api.yaoweibin.com/loadtime", false, $context);
我们将请求发送到https://api.yaoweibin.com/loadtime
。false告诉PHP不要使用路径。并将我们创建的上下文传递给方法。
为了显示响应,我们将使用以下输出。
echo "加载时间:" . json_decode($response)->data->total . "n";
在完成时,您的文件应如下所示:
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.yaoweibin.com/loadtime", false, $context);
echo "加载时间:" . json_decode($response)->data->total . "n";
?>
当您使用以下命令运行该文件时:
$php with_file_get_contents.php
您将得到以下输出
// Loadtime: 81
使用cURL
cURL是一个命令行实用程序,用于进行客户端URL请求。在PHP中,可以使用curl
工具。要开始使用它,请打开with_curl.php
文件并编写PHP的基本代码。
<?php
// 所有新的代码将写在这里
?>
然后让我们导入扩展并加载在.env
文件中定义的API_KEY环境变量。
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_init()
函数创建一个curl会话。我们可以将要发送请求的URL作为函数调用的参数传入。
$ch = curl_init("https://api.yaoweibin.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.yaoweibin.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响应了JSON数据。你可以根据需要使用这些数据。
使用Guzzle
在本教程的最后部分,我们将使用Guzzle来编写脚本。和往常一样,我们首先在with_guzzle.php
中插入PHP的基本代码。
<?php
// 所有的代码将写在这里
?>
然后,我们可以导入扩展、Guzzle Client和Request对象,并加载环境变量。
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类并传递API端点URL、标头和主体来发送请求。
$request = new Request('POST', 'https://api.yaoweibin.com/loadtime', $headers, $body);
然后,我们可以通过添加以下代码行来发送请求:
$response = $client->sendAsync($request)->wait();
请求发送后,我们可以按以下方式接收请求的主体:
$response_body = $response->getBody();
最后,我们可以解码JSON响应并打印出加载时间。
echo "Loadtime: " . json_decode($response_body)->data->total . "n";
因此,最终文件应如下所示:
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.yaoweibin.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
结论
在本文中,我们介绍了在创建一个需要Geekflare API的PHP项目时可能要使用的不同客户端。
虽然本项目中的脚本将命令行作为主要的输出形式,但在真实的项目中,可以在网页上呈现响应或将其写入文件。本文中的示例脚本很简单,但它们演示了使用Geekflare API的核心概念。要使用不同的API,可以更改端点并在请求主体中传入不同的选项。