GraphQL client in the terminal
Build and execute GraphQL queries in the terminal.
This project is inspired by https://graphiql-online.com.
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
{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 very well.
- Scrolling does not work.
- Fragments and unions are not implemented.
- Mutations and subscriptions are not implemented.
- And much more.
Ideas
-
Show GraphQL API documentation.
-
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"}]}