Cloudflare PHP API绑定

在Backend PHP Developer课程开始之前,准备了本文的翻译




对于使用PHP 7.0或更高版本的开发人员,Cloudflare提供了PHP API绑定程序。它支持Cloudflare API的最新第四版。您可以将此SDK用于多种用途,包括:

  • 管理和自动化对Cloudflare中DNS条目的更改。
  • 以编程方式将区域添加到您的帐户。
  • 版本控制和管理页面规则中的更改
  • 使用区域锁定和UserAgent规则自动阻止IP地址和用户代理。
  • 获取Cloudflare IP范围以使用防火墙自动进行白名单

支持的功能


本文提供了一些使用Cloudflare PHP Binding API的常见示例。当前,我们支持以下端点和身份验证方法:

V4端点

  • 域名解析
  • 知识产权
  • 页面规则
  • 用户代理规则
  • 用户管理(部分)
  • 区域锁定
  • 区域

认证方式

  • 用户服务键
  • API密钥

安装


Cloudflare PHP API绑定可在Packagist上的cloudflare / sdk中获得,可通过调用composer require cloudflare / sdk使用Composer进行安装



此外,如果您想直接阅读源代码或为项目做贡献,则可以在以下位置找到源代码GitHub在cloudflare / cloudflare-php存储库中

开始工作


这是使用API​​的一个小例子

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$user = new \Cloudflare\API\Endpoints\User($adapter);

echo 'Your user ID is: ' . $user->getUserID() . PHP_EOL;


通过在命令行上运行此简单脚本,我们得到以下输出:



上市区


以下是使用以下代码列出帐户中所有区域的方法:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);

$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
foreach ($zones->listZones()->result as $zone) {
   echo $zone->name.' ('.$zone->plan->name.')'.PHP_EOL;
}

通过命令行运行此脚本将给出以下输出:



清除所有网站上的缓存


这是另一个使用“清除缓存”端点完全清除帐户每个网站上的缓存的示例(请注意,您可以使用cachePurge方法而不是cachePurgeEverything来清除使用缓存的单个文件):

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);

$zones = new \Cloudflare\API\Endpoints\Zones($adapter);
foreach ($zones->listZones()->result as $zone) {
   echo "Cache purge for " . $zone->name . ": ";
   echo $zones->cachePurgeEverything($zone->id) == true ? "successful" : "failed";
   echo PHP_EOL;

}

由于在命令行上运行此脚本,因此您将看到以下输出:



创建页面规则


该SDK还可用于以编程方式将页面规则添加到Cloudflare区域。这是添加缓存绕过规则的简单示例:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);

$zoneID = $zones->getZoneID("junade.com");

$pageRulesTarget = new \Cloudflare\API\Configurations\PageRulesTargets('https://junade.com/noCache/*');

$pageRulesConfig = new \Cloudflare\API\Configurations\PageRulesActions();
$pageRulesConfig->setCacheLevel('bypass');

$pageRules = new \Cloudflare\API\Endpoints\PageRules($adapter);
$pageRules->createPageRule($zoneID, $pageRulesTarget, $pageRulesConfig, true, 6);

我们可以使用Zones终结点类的getZoneID方法轻松获得所需区域的ID-此帮助程序方法通过区域名称返回ID。

请注意,SDK使用依赖项注入来指定页面规则的目的和配置。这就是为什么我们需要将PageRulesTargets和PageRuleActions类的实例传递给createPageRule方法。

域名解析


该SDK还可用于以编程方式添加记录。这是添加DNS记录的示例:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);

$zoneID = $zones->getZoneID("junade.com");

$dns = new \Cloudflare\API\Endpoints\DNS($adapter);
if ($dns->addRecord($zoneID, "A", 'example', '8.8.8.8', 0, true) === true) {
   echo "DNS record created.". PHP_EOL;
}

此外,我们还可以使用此SDK删除,列出和查看DNS记录的详细信息。例如,让我们创建一个简单的脚本来列出我们区域中每个DNS记录的类型和名称:

<?php

require_once('vendor/autoload.php');

$key = new \Cloudflare\API\Auth\APIKey('mjsa@junade.com', 'API KEY GOES HERE');
$adapter = new Cloudflare\API\Adapter\Guzzle($key);
$zones = new \Cloudflare\API\Endpoints\Zones($adapter);

$zoneID = $zones->getZoneID("icyapril.com");

$dns = new \Cloudflare\API\Endpoints\DNS($adapter);
foreach ($dns->listRecords($zoneID)->result as $record) {
   echo $record->type." ".$record->name.PHP_EOL;
}

当我为我的区域之一运行此脚本时,将是输出:





了解有关该课程的更多信息



All Articles