レートリミットは、一定時間に受け付けるリクエスト数の上限。 超えた分は処理されず、ステータスコード 429(Too Many Requests) が返る。 1利用者の連打からサーバーを守る仕組みで、公開APIにはほぼ必ずある。
いま何回残っているかは、レスポンスヘッダに書いてある。
| ヘッダ | 意味 |
|---|---|
X-RateLimit-Limit | 上限(例:5000回/時) |
X-RateLimit-Remaining | 残り回数 |
X-RateLimit-Reset | 上限が回復する時刻 |
Retry-After | (429のとき)何秒後に再送してよいか |
ヘッダ名はAPIごとに少し違うので、ドキュメントの「Rate limit」の節で確認する。
429 は失敗ではなく「待てばまた通る」の合図。対応は2段構え。
Retry-After があれば、その秒数だけ待って同じリクエストを再送する残量の確認は curl -i でヘッダごと表示すればいい。
curl -i https://api.github.com/users/octocat
Remaining を見ながら叩く