Github APIメモ

Github API (version 2)のメモ。主に情報取得系のAPIについて。

概要

ドキュメント

フォーマットにxml,yaml,jsonを指定できる。以下ではXMLを指定する。ブラウザで見やすいので。

取得系のURLパターン。

  • ID不要
    • repos/search/キーワード …… リポジトリ検索
    • repos/show/ユーザ …… ユーザのリポジトリ一覧
    • repos/show/ユーザ/リポジトリ …… リポジトリ情報
    • commits/list/ユーザ/リポジトリ/ブランチ …… 最近のコミット(コミットID、ルートツリーIDが得られる)
    • commits/list/ユーザ/リポジトリ/ブランチ/パス …… 最近のコミット (コミットID、ルートツリーIDが得られる)
  • ID必要
    • commits/show/ユーザ/リポジトリ/コミットID …… コミット詳細(diffを含む)
    • tree/show/ユーザ/リポジトリ/ツリーID …… ディレクトリの中身
    • blob/show/ユーザ/リポジトリ/ツリーID/パス …… ファイルの中身
    • blob/show/ユーザ/リポジトリ/各種ID …… 生データ

オブジェクト

github APIで表現されるgitオブジェクト。

  • commitオブジェクト
    • ID
    • ツリーID
    • parent IDs
    • コミットログ
    • githubのURL
    • 作者
    • 作成日
    • コミッタ
    • コミット日
    • diff (追加・修正・削除)
  • treeオブジェクト(ディレクトリ)
  • blobオブジェクト(ファイル)

コミットAPI

ブランチへのコミット

ブランチへのコミットログを取得する。

commits/list/ユーザ/リポジトリ/ブランチ

最新から最大30件。ページ送りはできないっぽい。parentで1つ前のコミットなら取得できる。

ファイルへのコミット

ファイルへのコミットログを取得する。

commits/list/ユーザ/リポジトリ/ブランチ/パス

ディレクトリも指定できる。

単一のコミット取得

IDでコミットを取得する。一覧で取得できる情報に加えて、変更箇所のdiffが得られる。

commits/show/ユーザ/リポジトリ/コミットID

オブジェクトAPI

Tree
tree/show/ユーザ/リポジトリ/ツリーID

ドキュメントには書かれていないが、コミットIDも指定できた。

Blob
blob/show/ユーザ/リポジトリ/ツリーID/パス
生データ
blob/show/ユーザ/リポジトリ/Blob・ツリー・コミットID

その他のAPI

  • ユーザ管理(User API)
  • イシュートラッキング (Issue API)
  • ネットワーク (Network API)
  • リポジトリの作成・削除・フォーク等

などがある。

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 → ルートツリーオブジェクト → パスを下降しながらツリーオブジェクトを順に取得 → 目的のツリーオブジェクトをゲット

この記事の履歴