使用Cloudflare来讨论GraphQL

经过

我认为使用Cloudflare时会经常担心带宽的问题。
虽然使用API很方便,但是听说旧的API即将无法使用了。

请使用新的GraphQL分析API代替:https://developers.cloudflare.com/analytics/graphql-api/。
兼容性警告
终止日期:2020年11月2日
请使用新的GraphQL分析API代替:https://developers.cloudflare.com/analytics/graphql-api/。

我从未听说过GraphQL等,但只能进行迁移。边看说明边测试。
https://developers.cloudflare.com/analytics/migration-guides/zone-analytics/
https://developers.cloudflare.com/analytics/graphql-api/tutorials/build-your-own-analytics/

成果

可以通过以下方式获取每日带宽的总结。

<?php
$authemail="username@example.com";  //アカウントのメールアドレス
$apikey="0123456789abcdef0123456789abcdef01234";  //APIキー
$zoneid="0123456789abcdef0123456789abcdef";  //ゾーンID

$datetime_geq = gmdate('Y-m-d', strtotime("-364 days")); //開始日
$datetime_lt = gmdate('Y-m-d', strtotime("now")); //終了日
$content = '{
  viewer {
    zones(filter: {zoneTag: "'.$zoneid.'"}) {
      httpRequests1dGroups(orderBy: [date_ASC], limit: 365,
        filter: {date_geq: "'.$datetime_geq.'", date_lt: "'.$datetime_lt.'"}){
        dimensions {
          date
        }
        sum {
          bytes
        }
      }
    }
  }
}';
$url = 'https://api.cloudflare.com/client/v4/graphql';
$ch = curl_init();
$defaultOptions = [
    CURLOPT_URL => $url,
    CURLOPT_POST => true, //GraphQLはPOST必須らしい
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => json_encode(array('query' => $content)),
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "X-AUTH-EMAIL: ".$authemail,
        "X-AUTH-KEY: ".$apikey,
    ]
];
curl_setopt_array($ch, $defaultOptions);
$chContents = curl_exec($ch);
$curlInfo = curl_getinfo($ch);
curl_close($ch);
echo $chContents; //応答はJSONなのでjson_decodeでデコードして利用する

加入太多选项可能会导致超时问题,因此需要缩短时间或者注意处理。

广告
将在 10 秒后关闭
bannerAds