Github API v4を使ってみる(1)動かしてみる
はじめに
Githubの情報(リポジトリやスター数など)をコードから取得できる、Github APIがある。 Github APIのバージョンにはv3とv4がある。v3はREST APIで、v4はGraphQLというものをベースにしたAPIとなっている。
GraphQLベースのv4を2種類の方法で使ってみる。
使ってみる
使い方としては、2つの方法があり、
- GraphQL Explorer
- アクセストークンを使う方法
を使うことで、APIを呼び出す。GraphQL Explorerは、ブラウザーで使えて、入力補完もしてくれるので使いやすい。
1. GraphQL Explorerを使う方法
GraphQL Explorerは、 Github APIをブラウザーで使えるようにしたもの。 GraphiQLをベースにしてある。 GraphQL Explorerは、queryのみ使え、読み込みのみ出来る。
まず、https://developer.github.com/v4/explorer/ でGraphQL Explorerのページを開く。
右上のsign inでgithubにサインインする。
権限の許可のページが出てくる。 権限は、下のものへのアクセスの許可が求められている。
user public_repo repo repo_deployment repo:status read:repo_hook read:org read:public_key read:gpg_key
緑のAuthorize githubと書いてあるボタンを押して、許可する。
explorerのページへ飛び、explorerが使えるようになる。これで、github apiを使うことが出来る。
最初に書かれているクエリで試してみる。
query { viewer { login } }
丸い実行ボタンを押すことで、実行される。
結果は右側の部分に表示される。
{ "data": { "viewer": { "login": "3sdd" } } }
これで、explorerを使ってGithub APIを使えるようになった。 jsonファイルにしたければ、適当なファイル名(data.jsonなど)を付けて、結果を保存する。
GraphiQLでも、設定することで使うことができるようである。
https://developer.github.com/v4/guides/using-the-explorer/#using-graphiql
2. アクセストークンを使う方法
アクセストークンを使って、リクエストで取得することもできる。
githubのガイドではcurlが使われていた。 今回は、pythonで試してみる。
コマンドで使うには、アクセストークン(personal access token)が必要となる。 githubでアクセストークンを作る。 このページにアクセストークンの 作り方が書いてある。画像の通り進めていく。 スコープについての設定は、上のexplorerと同様のものにしておく。
user public_repo repo repo_deployment repo:status read:repo_hook read:org read:public_key read:gpg_key
作成すると、下の画像のように黒塗りの部分にアクセストークンが生成されるので、保存しておく。
次にアクセストークンを使って、Github APIを呼び出す。
今回は、pythonのバージョンは3.7.4で実行した。
先ほど、作ったアクセストークンをヘッダーにセットしてプログラムからアクセスできるようにする。valuesの値部分のquery{...}
の部分は求めたいクエリにする。今回は、ログイン者の情報を求める。
import urllib.request import json personal_access_token="アクセストークン記入" # 自分のアクセストークン endpoint="https://api.github.com/graphql" #送信先のendpoint headers={"Authorization":f"Bearer {personal_access_token}"} values={"query":"query{viewer{login}}"} # query部分 値に内容を書く data=json.dumps(values) #strにする data=data.encode("utf-8") #byte型へ変換する #リクエストを作成送信して、結果を得る。 req=urllib.request.Request(endpoint,headers=headers,data=data) with urllib.request.urlopen(req) as response: body=response.read() #結果が変数bodyに入っているのでjson形式で整形して # data.jsonというファイルを作成し保存する j=json.loads(body) with open("data.json","w",encoding="utf-8") as f: json.dump(j,f,indent=4)
実行してみると、
data.json
というファイルが出来て、
中にはクエリで求めた情報、
ログインユーザーの情報が入っている。
{ "data": { "viewer": { "login": "3sdd" } } }
おわりに
Github API v4をGraphQL Explorerとアクセストークンを使う2種類の方法で試してみた。 GraphQL Explorerは、補完もあり手軽に試せる。プログラムから使いたいときは、アクセストークンを作って使うことが出来る。
次は、クエリの内容について調べたい。