Github APIメモ
Github API (version 2)のメモ。主に情報取得系のAPIについて。
概要
ドキュメント
フォーマットにxml,yaml,jsonを指定できる。以下ではXMLを指定する。ブラウザで見やすいので。
- http://github.com/api/v2/:format (URLのベース)
取得系のURLパターン。
- ID不要
- ID必要
オブジェクト
github APIで表現されるgitオブジェクト。
リポジトリAPI
コミットAPI
ブランチへのコミット
ブランチへのコミットログを取得する。
commits/list/ユーザ/リポジトリ/ブランチ
- 例: http://github.com/api/v2/xml/commits/list/rails/rails/master
- 例: http://github.com/api/v2/xml/commits/list/koseki/hatenadiary-writer/master
最新から最大30件。ページ送りはできないっぽい。parentで1つ前のコミットなら取得できる。
ファイルへのコミット
ファイルへのコミットログを取得する。
commits/list/ユーザ/リポジトリ/ブランチ/パス
- 例: http://github.com/api/v2/xml/commits/list/rails/rails/master/.gitignore
- 例: http://github.com/api/v2/xml/commits/list/rails/rails/master/railties/bin/rails
ディレクトリも指定できる。
単一のコミット取得
IDでコミットを取得する。一覧で取得できる情報に加えて、変更箇所のdiffが得られる。
commits/show/ユーザ/リポジトリ/コミットID
オブジェクトAPI
Tree
tree/show/ユーザ/リポジトリ/ツリーID
ドキュメントには書かれていないが、コミットIDも指定できた。
Blob
blob/show/ユーザ/リポジトリ/ツリーID/パス
- 例: http://github.com/api/v2/xml/blob/show/koseki/hatenadiary-writer/dfa37551f14888aceaffe508f584570db5668b99/.gitignore
- ツリーIDで指定したディレクトリの直下のファイルしか取れない。
- 例: http://github.com/api/v2/xml/blob/show/koseki/hatenadiary-writer/1412aa44f43eda7d471b622081db36996ea37762/hatena_preview_server.rb (下層のツリーID/直下のパス) → OK
- 例: http://github.com/api/v2/xml/blob/show/koseki/hatenadiary-writer/dfa37551f14888aceaffe508f584570db5668b99/lib/hatena_preview_server.rb (ルートツリーID/下層のパス) → NG
生データ
blob/show/ユーザ/リポジトリ/Blob・ツリー・コミットID
GithubのURL設計
サイトのURL設計。だいたいこんな感じ。
http://github.com/ユーザ/リポジトリ/オブジェクトタイプ/ID/パス
- オブジェクトタイプ
- blog
- tree
- commit
- ID
- コミットID
- ブランチ名
- タグ名
http://github.com/ユーザ/リポジトリ/commit/コミットID http://github.com/ユーザ/リポジトリ/tree/コミットID http://github.com/ユーザ/リポジトリ/tree/コミットID/下位のディレクトリのパス http://github.com/ユーザ/リポジトリ/blob/コミットID/ファイルのパス
- ツリーを表示するのにツリーのIDは指定しない。URLだけ見てtreeとcommit表示を切り替えられる。
- APIとのズレ。コミットIDとパスだけ使ってツリーを取得するのは大変。
- コミットID → コミットオブジェクト → ルートツリーID → ルートツリーオブジェクト → パスを下降しながらツリーオブジェクトを順に取得 → 目的のツリーオブジェクトをゲット