Skip to main content

GraphQL client in the terminal.

Project description

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

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

Installation

$ pip3 install gqt

Usage

Set default GraphQL endpoint URL:

$ 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
{statistics {numberOfGraphqlRequests}}

Use jq for colors and extracting field values:

$ gqt | jq
{
  "statistics": {
    "numberOfGraphqlRequests": 5
  }
}
$ gqt | jq .statistics.numberOfGraphqlRequests
6

Alternatively use and bat for colors:

$ gqt | bat -l json
───────┬────────────────────────────────────────────
        STDIN
───────┼────────────────────────────────────────────
   1    {
   2       "statistics" : {
   3          "numberOfGraphqlRequests" : 7
   4       }
   5    }
───────┴────────────────────────────────────────────

Use YAML output and bat for colors:

$ gqt -y | bat -l yaml
───────┬────────────────────────────────────────────
        STDIN
───────┼────────────────────────────────────────────
   1    statistics:
   2      numberOfGraphqlRequests: 8
───────┴────────────────────────────────────────────

Print the schema:

$ gqt --print-schema | bat -l graphql
───────┬────────────────────────────────────────────
        STDIN
───────┼────────────────────────────────────────────
   1    type Query {
   2      standardLibrary: StandardLibrary!
   3      statistics: Statistics!
   4      activities: [Activity!]!
   5    }
   6   
   7    type StandardLibrary {
   8      package(name: String!): Package!
   9      packages: [Package!]
  10      numberOfPackages: Int
  11      numberOfDownloads: Int
  12    }
  ...

Known issues

  • Arguments does not work very well.

  • Scrolling.

Ideas

  • Mutations?

  • Subscriptions?

  • Arguments and variables:

    ■: not null
    □: null
    $: variable

    Scalar example:

    ╭─ Query
    │ ▼ standard_library
    │   ▼ package
    │     ■ name: ""
    │     □ name
    │   ▶ packages

    List example:

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

    Variables example:

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

    Print the variables:

    $ gqt -v
    {"name": "foo", "kind": [{"a": "bar", "b": "ne"}]}

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.46.0.tar.gz (9.1 kB view hashes)

Uploaded Source

Built Distribution

gqt-0.46.0-py3-none-any.whl (8.6 kB view hashes)

Uploaded Python 3

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