コンテンツにスキップ

curlを使ってGraphQLクエリを実行する

プレーンなcurlを使用してクエリを送信することで、結果をスライスしたりダイスしたりし、必要に応じて後処理を適用することができます。例えば、GraphQL APIから受け取った結果をCSV形式に変換することができます。

自動補完やスキーマ探索など、より多くの機能が必要な場合は、GraphQLのクライアントを検討してください。

GraphQL APIは、“query”と”variables”の2つの必須フィールドを持つJSONを期待します。

クエリは改行記号を取り除き、クエリで使用されるすべてのプレースホルダーの値で満たされたオブジェクトとして変数がある場合、1行の文字列として送信する必要があります。

GraphQL APIのペイロード構造
{
"query": "{viewer { ... }}",
"variables": {}
}

ただし、人間に優しいクエリを使用することも可能です。以下の例では、echotrとパイプでつなげて、curlで適切なペイロードを提供する方法を示しています。

curlを使用してAnalytics APIにクエリを送信する例のbashスクリプト
echo '{ "query":
"{
viewer {
zones(filter: { zoneTag: $zoneTag }) {
firewallEventsAdaptive(
filter: $filter
limit: 10
orderBy: [datetime_DESC]
) {
action
clientAsn
clientCountryName
clientIP
clientRequestPath
clientRequestQuery
datetime
source
userAgent
}
}
}
}",
"variables": {
"zoneTag": "<zone-tag>",
"filter": {
"datetime_geq": "2022-07-24T11:00:00Z",
"datetime_leq": "2022-07-24T12:00:00Z"
}
}
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data @-