GraphQL client in the terminal.
Project description
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
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
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.