使用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でデコードして利用する
加入太多选项可能会导致超时问题,因此需要缩短时间或者注意处理。