まず検索は公式のやり方に従い次のようにする。
この例では検索キーワードaaaa、検索結果100件(デフォルト30件)の条件でコミット検索を行いページ1を表示することになる。
curl -H "Authentication: token TOKEN" -H "Accept: application/vnd.github.cloak-preview" "https://api.github.com/search/commits?q=aaaa&page=1&per_page=100"
-Hはリクエストヘッダを付加するオプションで、-iはレスポンスに加えレスポンスヘッダも表示するオプション。-Iはレスポンスヘッダ「のみ」を表示するオプション。
Iオプションを付けてレスポンスヘッダを見てみると、
curl -H "Authentication: token TOKEN" -H "Accept: application/vnd.github.cloak-preview" -I "https://api.github.com/search/commits?q=aaaa&page=1&per_page=100"
以下のようになる。
HTTP/1.1 200 OK Date: Tue, 05 Dec 2017 03:46:27 GMT Content-Type: application/json; charset=utf-8 Content-Length: 815806 Server: GitHub.com Status: 200 OK X-RateLimit-Limit: 10 X-RateLimit-Remaining: 9 X-RateLimit-Reset: 1512445647 Cache-Control: no-cache X-GitHub-Media-Type: github.cloak-preview Link: <https://api.github.com/search/commits?q=aaaa&page=2&per_page=100>; rel="next", <https://api.github.com/search/commits?q=aaaa&page=10&per_page=100>; rel="last" Access-Control-Expose-Headers: ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval Access-Control-Allow-Origin: * Content-Security-Policy: default-src 'none' Strict-Transport-Security: max-age=31536000; includeSubdomains; preload X-Content-Type-Options: nosniff X-Frame-Options: deny X-XSS-Protection: 1; mode=block X-Runtime-rack: 1.260722 Vary: Accept-Encoding X-GitHub-Request-Id: F8B1:181D5:17DE45:202777:5A261691
公式のリファレンス、Traversing with Pagination通りだが、これのLinkのなかに、次のページと最後のページのURLが入っている。
Link: <https://api.github.com/search/commits?q=aaaa&page=2&per_page=100>; rel="next", <https://api.github.com/search/commits?q=aaaa&page=10&per_page=100>; rel="last"
このURLに、先ほどのようにcurlコマンドでアクセスするなりなんなりすれば良い。
実質、pageパラメータが1から2になっただけだけど。
コメント