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 and interfaces are not implemented.

  • And much more.

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
  • Check for schema modifications when starting. Do it in the background and notify the user if it was modified.

    New schema fetched from the server. Use it? y/n

  • Subscriptions. Probably out of scope.

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.87.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

gqt-0.87.0-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gqt-0.87.0.tar.gz
Algorithm Hash digest
SHA256 b5d211b70c703ba15c2b31d9b9f3a9840b7156b80b841f258ea5535446e3f097
MD5 48a15798e8ec2d69c886707087d18c49
BLAKE2b-256 011516be6c89d13265e8eba57cf389ce6e0e432fd15ea4e9535802fdda94e46e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gqt-0.87.0-py3-none-any.whl
  • Upload date:
  • Size: 13.9 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.87.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f100fd8a2c7369777d9d1a5f45dae3c3b8374a1c0b909b1d181fab4cf6bdbaa5
MD5 bb483849a65f1b0ad064e13b5e209e74
BLAKE2b-256 7908b641553518fb0fed9024676330898ed93122f470abe2b4cc2ccafc4e3114

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