通信失敗時のリトライ処理が行われない
Closed this issue · 0 comments
shoma2da commented
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が返却するレスポンスステータスを見てリトライするかを判別する必要がありそうです。
- 例えばAWSのリトライ仕様では以下の記載がありました。
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の制限事項に沿うための実装を行う必要があると考えます。