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,
});