APIクライアント開発Basics
APIクライアントおよびその開発に関わるTopicをまとめる.
Index
🔖レスポンス速度改善
サーバローケーションの特定
🔖API レート制限
API制限, API Rate limit.
- Rate limiting - Wikipedia
- API Server: 制限をかける側.
- API Client: 制限に怯える側.
💡http status=429: Too Many Requests
🔖HTTP Status Codeのなかでアクセスか多い場合のCode.
In case a client made too many requests within a given time frame, HTTP servers can respond with status code 429: Too Many Requests.
retry-afterで再試行までの時刻がわかる.
HTTP/2 429 date: Thu, 29 Feb 2024 03:51:38 GMT retry-after: 300
Rate Limit対策
レート制限回避ベストプラクティス
- Retry with delay
- via Proxy
- Queueing
- 📝キャッシュ
リトライ処理
📝Exponential Backoff
単純なdelayではなく1,2,4,8… のような指数関数でdelayするのがベストプラクティス.
- すべてのプログラマ必見!リトライ処理の効率的な手法、それは「Exponential Backoff」|Artrigger
- リトライ処理の効率的アプローチ「Exponential Backoff」の概要とGoによる実装 #Go - Qiita
流量管理
rate limiter
rate limit 関連のライブラリ
検索ワード
- rate limiter
- debouncing
- throttle
Topics
Wrapper APIライブラリ
APIクライアントライブラリにさらに機能追加したAPIクライアントライブラリ.
💡APIクライアントライブラリのレベルと責務(high level/low level/lightweight)
APIクライアントライブラリにはよく重さ(薄さや厚さ)の表現がされる(lightweight).
また, high level/low levelという議論もある.
それはそのライブラリの設計方針がどのレベルをサポートするかによる.
- Native APIを叩く.
- レスポンスハンドリング.
- レスポンスパース(DTO/Object Mapper).
- 例外処理.
- Native APIを組み合わせた機能提供.