nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

GitHub APIを利用する

GitHubでは様々なAPIがRESTで公開されています。

developer.github.com

ドキュメントも充実しているのですが、とっかかりが自分は理解しにくかったので簡単にメモしておきます。

さてGitHub APIを利用するには、つぎの3つを押さえておくことが重要だと思います。

リクエスト時にUserAgentを指定する

まず、はまりそうなのがUserAgentが指定されていないとAPIの呼び出しで403が返却されるという点です。

ブラウザやPostmanから呼び出すとうまく動くのに、プログラムから呼び出したら403が返ってくる・・・といった場合はこれでしょう。まぁ私がなったんですけど。

APIドキュメントの解釈の読み方

例えば、自分のリポジトリーの一覧を取得したいとします。ドキュメントはこちら

ドキュメントには以下のように指定するように記載されています。

GET /users/:username/repos

ここで「:」で始まっている部分が変数になります。ここでは「:username」なので例えば私のリポジトリであれば「nuitsjp」を指定します。

さて、GETは良いけど実際にはどのURLにリクエストを投げればよいのでしょうか?

これは一律「https://api.github.com」に対して指定されたパスを付与して呼び出します。ドキュメントではこちらに記載されています。

私(nuitsjp)のリポジトリの一覧を取得するのであれば次のURLへGETリクエストを投げることで、JSONとして結果を取得できます。

https://api.github.com/users/nuitsjp/repos

任意パラメーターの指定方法

さて、APIでは任意のパラメーターを指定して、取得結果を調整することができます。

例えばリポジトリの一覧取得であれば、type・sort・directionを指定できることがドキュメントに記載されています。こちらです。

https://developer.github.com/v3/repos/#parameters-1

これらのパラメーターはQuery stringとして指定します。例えばリポジトリの更新日時の降順であれば次のように指定します。

https://api.github.com/users/nuitsjp/repos?sort=updated

あとは頑張ってJSONを解析すればよいでしょう。Privateリポジトリの情報を取得する場合には認証なども必要になりますが、まず基本となるのはこちらです。

以上です。良かったら参考にどうぞ。