Skip to main content

GraphQL client in the terminal.

Project description

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 instead of executing it:

gqt -q
query Query {
  statistics {
    numberOfGraphqlRequests
  }
}

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

Make arguments variables by pressing v or $ 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
}
...

Known issues

  • Unions are not implemented.

  • There is one query cache per gqt version. Would be nice to keep the cache after upgrading gqt.

Ideas

  • Unions:

    Always query __typename.

    union SearchResult = Book | Author
    
    type Book {
      title: String!
    }
    
    type Author {
      name: String!
    }
    
    type Query {
      search(contains: String): [SearchResult!]
    }
    
    Unselected:
    
    ╭─ Query
    │ ▶ search
    
    Selected:
    
    ╭─ Query
    │ ▼ search
    │   ▶ Book
    │     ■ title
    │   ▶ Author
    │     ■ name
  • 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
  • Keep valid parts of any existing query when reloading the schema.

  • Cache across updates.

    • Save introspection response.

    • Save last query.

    • Save cursor and possibly other state.

    -- ~/.cache/gqt/cache/generic/
       +-- <endpoint 1>
           +-- schema.json
           +-- query.graphql
           +-- state.json
           +-- query_names/
               +-- stats/
                   +-- schema.json
                   +-- query.graphql
                   +-- state.json
  • Optionally give schema path on command line. For endpoints that does not support schema introspection.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gqt-0.94.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

gqt-0.94.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file gqt-0.94.0.tar.gz.

File metadata

  • Download URL: gqt-0.94.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for gqt-0.94.0.tar.gz
Algorithm Hash digest
SHA256 dab6bc408c3cde2ef0da61e8aba6b86f9ff14e12d306d447f6c3d7d1ba5968fe
MD5 f94e9110d3e1cb7ae35e46eb2df64847
BLAKE2b-256 bbcee54a597aeed7796f4e951671d53a2b08d5b16f1ea1fef4f08cd7fb70fcd7

See more details on using hashes here.

File details

Details for the file gqt-0.94.0-py3-none-any.whl.

File metadata

  • Download URL: gqt-0.94.0-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for gqt-0.94.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70933e7dd7ee54198f5b6d7d492512e3048d6a5ab554f967cbc602629d73d094
MD5 0adee6b295442702e8c3a96317e50b72
BLAKE2b-256 185c0c28a943ce02a02aa7413bb07cf726042f462934d7654b3f597ef4e7969b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page