microcmsio/microcms-js-sdk

通信失敗時のリトライ処理が行われない

Closed this issue · 0 comments

SDKにリトライオプションがないためNext.jsなどでビルドを行う際にビルド全体が停止してしまうか一部のデータが不足してしまう可能性が高いです。
クライアント側でリトライ処理を書けば良いのですが、毎回その実装を行うのは手間がかかります。

提案

インタフェース提案を行いますがこの通りでなくても構いません。

  • client 生成時にデフォルトのリトライ設定ができる
//例
const client = createClient({
  serviceDomain: "YOUR_DOMAIN", // YOUR_DOMAIN is the XXXX part of XXXX.microcms.io
  apiKey: "YOUR_API_KEY",
  retry: true, //新しいパラメータ
});
  • getなどリクエスト実行時にリトライ設定ができる
//例
client
  .get({
    endpoint: 'endpoint',
    queries: { limit: 20, filters: 'createdAt[greater_than]2021' },
    retry: true, //新しいパラメータ
  })

考慮事項

  • 実際にはAPIが返却するレスポンスステータスを見てリトライするかを判別する必要がありそうです。
Transient errors (HTTP status codes 400, 408, 500, 502, 503, and 504) and throttling errors (HTTP status codes 400, 403, 429, 502, 503, and 509) can all be retried.
  • リトライの実装に関しては ExponentialBackoff を行うなどmicroCMSの制限事項に沿うための実装を行う必要があると考えます。