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

  • Navigate with arrow keys.

  • Select fields with <Space>.

  • Toggle between argument selection and its value with <Tab>.

  • End with <Enter>.

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

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

  • Arguments does not work for scalar and input types.

  • Unions are not implemented.

  • And much more.

Ideas

  • Leaves with arguments:

    type Query {
        foo(id: Int, name: String): String
    }
    
    Unselected:
    
    ╭─ Query
    │ □ foo
    
    Selected:
    
    ╭─ Query
    │ ■ foo
    │   ■ id: 5
    │   □ name:
  • Required arguments with default value:

    □: omit
    ■: non-null value
    $: variable
  • 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

  • List argument example:

    ╭─ Query
    │ ▼ item
    │   ■ kinds:
    │     [0] ■ a: foo
    │         ■ b: eq
    │         ■ c:
    │           [0] ■ a: x
    │               ■ b: y
    │           [1]
    │     [1] ■ a: bar
    │         ■ b: ne
    │         □ c:
    │     [2]
  • Input example:

    ╭─ Query
    │ ▼ item
    │   ■ config:
    │     ■ unit: metric
    │     □ width:
    │   □ length
    │   □ weight
  • Variables example:

    ╭─ Query
    │ ▼ standardLibrary
    │   ▼ package
    │     $ name: name
    │     ■ id: 5
    │     $ kind: kind
    │     □ name
    │   □ numberOfDownloads
    │ ▶ statistics
    
    ╭─ Variables
    │ name: time
    │ kind:
    │   [0] ■ a: bar
    │       ■ b: ne
    │       □ c:
    │   [1]
  • Print variables:

    $ gqt -v
    {"name": "foo", "kind": [{"a": "bar", "b": "ne"}]}
  • 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
  • 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.61.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

gqt-0.61.0-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gqt-0.61.0.tar.gz
Algorithm Hash digest
SHA256 40dd95d7ad1b89becb5cce7b6e1586ef01df1375e88f86ced2207afe8e597107
MD5 a1902a04b9d06bbf75d521e86ca7ec70
BLAKE2b-256 077578c578d96cb7c57520da6fce7bac36061848f850d9d3125b6fe7fe1c8e69

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gqt-0.61.0-py3-none-any.whl
  • Upload date:
  • Size: 11.4 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.61.0-py3-none-any.whl
Algorithm Hash digest
SHA256 00b8d3035f10d2f1e4efd00fd78d6bbd5d7c712fb6db8a337f3cebc839dd1e71
MD5 1fd41cded050019a56e9bed1515cfb87
BLAKE2b-256 1551463c4067c7423ba0385b72803858c6165391689e851bff63e00df62ee6f0

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