在GitHub上使用GraphQL的方式是Curl

在GitHub上使用GraphQL的方法是:
我参考了下面的页面:
GraphQL入门-让你想要使用GraphQL

    1. 在GitHub上登录并创建访问令牌。具体操作步骤在以下页面中有说明:[为命令行创建个人访问令牌](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)。根据登录ID获取用户名。以我的“ekzemplaro”为例。

get_name.sh
#!/bin/bash
#
# get_name.sh
#
# Apr/8/2019
#
ACCESS_TOKEN=”*******your_access_token**********”
#
URL=”https://api.github.com/graphql”
#
curl -H “Authorization: bearer “$ACCESS_TOKEN -X POST -d@query.json $URL

query.json
{
“query”: “query { user(login: \”ekzemplaro\”) { name }}”
}

执行结果
$ ./get_name.sh
{“data”:{“user”:{“name”:”Uchida Masatomo”}}}

让查询稍微复杂一点。

query02.json
{
“query”: “query { user(login: \”ekzemplaro\”) { name location url }}”
}

执行结果
{
“data”: {
“user”: {
“name”: “Uchida Masatomo”,
“location”: “Tochigi,Japan”,
“url”: “https://github.com/ekzemplaro”
}
}
}

修改查询。

query03.json
{
“query”: “query {viewer {
repositories(first: 1) { edges { node { name description } } }
}
}”
}

执行结果
{
“data”: {
“viewer”: {
“repositories”: {
“edges”: [
{
“node”: {
“name”: “librivox_catalog”,
“description”: “LibriVox’s catalog page”
}
}
]
}
}
}
}

尝试获取最新的两个仓库。

query04.json
{
“query”: “query {viewer {
repositories(last: 2) { edges { node { name description } } }
}
}”
}

执行结果
{
“data”: {
“viewer”: {
“repositories”: {
“edges”: [
{
“node”: {
“name”: “django_plural_table”,
“description”: “Django sample”
}
},
{
“node”: {
“name”: “django_member_shozoku”,
“description”: “Django Example”
}
}
]
}
}
}
}

确认的版本

$ curl --version
curl 8.0.1 (x86_64-pc-linux-gnu) libcurl/8.0.1 OpenSSL/3.0.8 zlib/1.2.13 brotli/1.0.9 zstd/1.5.4 libidn2/2.3.4 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.10.0 nghttp2/1.52.0
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd

请参考

GitHub GraphQL API Explorer 的使用方法

广告
将在 10 秒后关闭
bannerAds