Ответ Nock с кодами 302 и 404 вызывает HTTPError

Я делаю функцию, которая должна повторять код ошибки 302 и возвращать данные на 200, иначе просто выдать ошибку.

  async retry(url: string): Promise<Response<string>> {
      const response = await got.get(url)
      switch(res.statusCode){
        case 200: {
          return response
        }
        case 302: {
          -> call login
          -> call retry again with retry(url)
        }
        default: {
          throw error
        }
      }
    }

Проблема в том, что когда я настраиваю nock следующим образом

const scope = nock('https://airtable.com')
  .get(`/${baseID}/api/docs`)
  .reply(302)
})

Проблема в том, что он даже не может вызвать повторную попытку, потому что mock возвращает код состояния 302, который внутренне для него выдает HTTPError, который здесь нежелателен, поэтому нужно ли добавить, чтобы он не выдавал ошибки?


person Mr.Fab    schedule 29.05.2020    source источник


Ответы (1)


Это происходит из-за поведения Got по умолчанию. Он выдает ошибки для определенных кодов состояния, которые он считает ошибкой.

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

person Matt R. Wilson    schedule 29.05.2020
comment
Он подключен к нему, но на самом деле виновником является полученная опция под названием throwHttpErrors, и как только я установил для нее значение false, проблема исчезла. В любом случае спасибо, поскольку для параметра followRedirect также должно быть установлено значение false, вы правы, ура! P.S. мог бы поклясться, что ответил на свой вопрос:/ Просто отредактируйте с флагом throwHttopError, чтобы я мог принять ваш ответ :) - person Mr.Fab; 01.06.2020