API レート制限 (Rate Limiting) とは、API へのリクエスト数を一定期間内に制限する仕組みです。サーバーの過負荷防止、サービスの安定性確保、不正利用 (DDoS 攻撃、スクレイピング、ブルートフォース攻撃) の防止を目的としています。
レート制限の一般的な実装方式には、固定ウィンドウ (一定期間ごとにカウンターをリセット)、スライディングウィンドウ (直近の一定期間のリクエスト数を計算)、トークンバケット (一定速度でトークンが補充され、リクエストごとにトークンを消費) などがあります。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=API%20設計%20レート制限&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">Amazon の関連書籍</a><% } else { %>Amazon の関連書籍<% } %>も参考になります。
短縮 URL サービスでは、URL の一括短縮 API にレート制限を設けることで、サービスの安定性を確保します。レート制限に達した場合は HTTP 429 (Too Many Requests) ステータスコードを返し、Retry-After ヘッダーで再試行可能な時間を通知します。
API 利用者側の対策として、レート制限に達した場合の指数バックオフ (Exponential Backoff) によるリトライ、リクエストのバッチ処理、レスポンスのキャッシュなどが有効です。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=API%20運用%20ベストプラクティス&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">API 運用のベストプラクティス集</a><% } else { %>API 運用のベストプラクティス集<% } %>も役立ちます。