Перейти к основному содержимому
Version: 3.9.x

Повторные отправки запросов

Вы можете использовать параметр retry, чтобы повторить ваш запрос несколько раз, если он не удался.

Запрос в приведенном ниже примере сделает три попытки запросить данные, Если не удалось с 3-й попытки - будет выдан ответ об ошибке.

import { RestRequest, IResponse } from "@mihanizm56/fetch-api";

export const getWhateverRequest = (someData): Promise<IResponse> =>
  new RestRequest().getRequest({
    endpoint: "http://localhost:3000",
    retry: 3,
  });

Вы должны знать, что параметр retry привязан к параметру timeoutValue. (описание тут)

|-------timeoutValue--------|

|--retry1--retry2--retry3--|

Вы можете использовать параметр extraVerifyRetry - это коллбек с типом ответа IResponse в качестве параметра. Там вы можете создавать разные условия для повторных запросов в разных ситуациях. Например, если вам нужно повторить запрос, если код ответа не 401:

import { RestRequest, IResponse } from "@mihanizm56/fetch-api";
import { ExtraVerifyRetryCallbackType } from '@mihanizm56/fetch-api/dist/types';

export const extraVerifyNotAuthRetry: ExtraVerifyRetryCallbackType = ({
  formattedResponseData: { code, error },
}) => {
  if (!error) {
    return false;
  }

  if (code === 401) {
    return false;
  }

  return true;
};


export const getWhateverRequest = (someData): Promise<IResponse> =>
  new RestRequest().getRequest({
    endpoint: "http://localhost:3000",
    responseSchema: Joi.object({
      test_string_field: Joi.string().required(),
    }),
    retry: 3,
    extraVerifyRetry: extraVerifyNotAuthRetry,
  });