web-dev-qa-db-fra.com

Comment utiliser curl pour accéder à l'API github graphql

Après avoir référé ceci guide j'avais besoin d'accéder au github graphql en utilisant curl à des fins de test. J'ai essayé cette commande simple

curl -i -H "Authorization: bearer myGithubAccessToken" -X POST -d '{"query": "query {repository(owner: "wso2", name: "product-is") {description}}"}' https://api.github.com/graphql

mais ça me donne

problèmes d'analyse JSON

qu'est ce que je fais mal. J'ai passé près de 2 heures à essayer de comprendre et à essayer différents exemples, mais aucun d'entre eux n'a fonctionné. Pourriez-vous s'il vous plaît être assez aimable pour m'aider à résoudre ce problème

15

Vous avez juste besoin d'échapper aux guillemets doubles qui sont à l'intérieur du JSON comme requête

$ curl -i -H 'Content-Type: application/json' -H "Authorization: bearer myGithubAccessToken" -X POST -d '{"query": "query {repository(owner: \"wso2\", name: \"product-is\") {description}}"}' https://api.github.com/graphql

14
Yuri Schimke

Si vous voulez que vos requêtes restent agréables et multilignes, vous pouvez faire comme ceci:

script='query {
  repositoryOwner(login:\"danbst\") {
    repositories(first: 100) {
      edges {
        node {
          nameWithOwner
          pullRequests(last: 100, states: OPEN) {
            edges {
              node {
                title
                url
                author {
                  login
                }
                labels(first: 20) {
                  edges {
                    node {
                      name
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}'
script="$(echo $script)"   # the query should be onliner, without newlines

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