« ^ »

axios-retryでリクエストのリトライ処理を行う

所要時間: 約 2分

JavaScriptでHTTPを送信するライブラリの一つにaxiosがある1。axiosで送信したリクエストが失敗した場合などに、再度同じリクエストを送信したい時、再送信すること自体をよくリトライ処理と呼ぶ。レスポンスの状態を見てリトライ処理を自分で実装することもできるが、リトライ処理用のライブラリも存在する。axios-retryはaxios用に実装されたリトライ処理を扱う2。axios-retryを用いたリトライ処理は以下のようになる。

import axios from 'axios';
import axiosRetry from 'axios-retry';

axiosRetry(axios, {
  retries: 1,
  retryCondition: () => true,
  retryDelay: function(retryCount, error) {
    return 2;
  }
})
const resp = await axios.get('http://example.com/rea')

console.log(resp);
axios-retryを用いたリトライ処理の例 3

retriesで1を指定しているため1回だけリトライする。またretryDelayで2を返しているので、axios-retryは失敗した2ミリ秒後にリトライ処理を行う3。ここの返す値を工夫するとリトライ回数毎に待つ秒数を増せる。retryConditionでは常にtrueを返しているため、失敗した場合は常にリトライ処理を行う。状態によってリトライ処理をするかしないかを切り替えたい場合は、この判定を状態をみてfalseにすればよい。


3

間違った記述に対する指摘を頂いたため修正した。指摘をくださった方々、ありがとうございました。