Skip to content

Latest commit

 

History

History
253 lines (164 loc) · 4.13 KB

README.rst

File metadata and controls

253 lines (164 loc) · 4.13 KB

GraphQL client in the terminal

Build and execute GraphQL queries in the terminal.

This project is inspired by https://graphiql-online.com.

https://github.com/eerimoq/gqt/raw/main/docs/assets/showcase.gif

Installation

pip3 install gqt

It's recommended to install bat for pretty output.

Controls

  • Press h or ? for help.

Examples

Set default GraphQL endpoint:

export GQT_ENDPOINT=https://mys-lang.org/graphql

Interactively create a query and execute it:

gqt
{
    "statistics": {
        "numberOfGraphqlRequests": 3
    }
}

Repeat last query:

gqt -r
{
    "statistics": {
        "numberOfGraphqlRequests": 4
    }
}

Print the query (and variables) instead of executing it:

gqt -q
Query:
query Query {
  statistics {
    numberOfGraphqlRequests
  }
}

Variables:
{}

YAML output:

gqt -y
statistics:
  numberOfGraphqlRequests: 8

Name queries:

gqt -n stats -y
statistics:
  numberOfGraphqlRequests: 8
gqt -n time -y
standardLibrary:
  package:
    latestRelease:
      version: 0.20.0
gqt -n stats -y -r
statistics:
  numberOfGraphqlRequests: 9
gqt -n time -y -r
standardLibrary:
  package:
    latestRelease:
      version: 0.20.0

List queries:

gqt -l
Endpoint                      Query name
----------------------------  ------------
https://mys-lang.org/graphql  <default>
https://mys-lang.org/graphql  time
https://mys-lang.org/graphql  stats

Make arguments variables by pressing v and give them as -v <name>=<value> on the command line:

gqt -v name=time -y
standardLibrary:
  package:
    latestRelease:
      version: 0.20.0
gqt -r -q
query Query($name: String!) {
  standardLibrary {
    package(name: $name) {
      latestRelease {
        version
      }
    }
  }
}

Print the schema:

gqt --print-schema
type Query {
  standardLibrary: StandardLibrary!
  statistics: Statistics!
  activities: [Activity!]!
}

type StandardLibrary {
  package(name: String!): Package!
  packages: [Package!]
  numberOfPackages: Int
  numberOfDownloads: Int
}
...

Enpoint option and bearer token in HTTP auth header:

gqt -e https://api.github.com/graphql -H "Authorization: bearer ghp_<value>"

Ideas

  • Press c for compact view, hiding fields that are not selected.

  • Search:

    Press / to search for visible fields. Press <Up> and <Down> to move to the previous and next search hit. Highlight all hits. Press <Enter> to end the search and move the cursor to the current hit. Press <Esc> to abort the search and restore the cursor to its pre-search position. Show number of hits.

    ╭─ Query
    │ ▼ search
    │   ▶ Book
    │     ■ title
    │   ▶ Author
    │     ■ name
    │ ▶ film
    │ ▶ films
    
    /fil                                                1 of 2 matches
    
  • Alias?

    • Press a to create an alias.
    • Press d to delete an alias.

    smallPicture and mediumPicture are aliases of picture.

    ╭─ Query
    │ ▶ Book
    │   ▶ picture
    │   ▼ smallPicture: picture
    │     ■ width: 320
    │     ■ height: 240
    │   ▼ mediumPicture: picture
    │     ■ width: 800
    │     ■ height: 600
    
  • Optionally give schema path on command line. For endpoints that does not support schema introspection.