curlでGraphQLの長いqueryを投げる


これはなに

curlでGraphQLの長めのqueryコマンドを投げて結果を得るスクリプト

コマンド

GITHUB_TOKENはここから用意してね

ためしにGitHubから JakeWharton のリポジトリを取得してみる。

query.sh
script='query User {
  user(login:\"JakeWharton\") {
    name
    repositories(privacy:PUBLIC,affiliations:OWNER,first:10) {
      edges {
        node {
          name
          description
          createdAt
        }
      }
    }
  }
}'
script="$(echo $script)" #改行を消して1行にする、改行あるとJSON parsingエラーが返ってくる

curl -H "Authorization: bearer GITHUB_TOKEN" \
    -H 'Content-Type: application/json' \
    -X POST -d "{ \"query\": \"$script\"}" https://api.github.com/graphql \
    | jq .

レスポンスをjqで整形して見やすくしている

レスポンス

超長いの途中で省略、こんな形で取得できる

{
  "data": {
    "user": {
      "name": "Jake Wharton",
      "repositories": {
        "edges": [
          {
            "node": {
              "name": "SMSMorse",
              "description": "An Android service that vibrates incoming SMS messages in Morse code.",
              "createdAt": "2009-03-27T03:26:46Z"
            }
          },
          {
            "node": {
              "name": "mkvdts2ac3",
              "description": "Bash script to convert DTS audio to AC3 within a matroska file.",
              "createdAt": "2009-03-27T03:35:57Z"
            }
          },
...

普通ならGraphQL対応のクライアントツールでqueryをなげるものだが、シェルスクリプトの場合はこんな形で使用できる。