github Search APIでページ移動する方法

プログラミングor技術

まず検索は公式のやり方に従い次のようにする。
この例では検索キーワード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になっただけだけど。

コメント