Ax ios. Получите запрос странное поведение - PullRequest
1 голос
/ 21 января 2020

У меня следующий запрос на получение:

return axios
    .get<ArticlesResponse>(SUGGESTED_ARTICLES, {
      headers: {
        'Content-Type': 'application/json',
      },
    })
    .then(onRequestSuccess)
    .catch(onRequestError);

Он возвращает мне объект с нужными мне данными, однако поле данных внутри объекта представляет собой строку вместо фактического объекта. У кого-нибудь есть идеи по поводу почему? Я посмотрел его и увидел, что добавление заголовка выше решит проблему, но это не так. Заранее спасибо!

Мой onRequestSucces:

export function onRequestSuccess<T = any>(response: AxiosResponse<T>) {
  console.log('Request Successful!', response);

  return response.data;
}

JSON.Parse() также не исправит это.

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Проблема может быть связана с тем, что API возвращает ответ, содержащий недействительные JSON данные, теперь JSON .parse выдает ошибку, но Ax ios управляет исключением, устанавливая неверно JSON как строка в свойстве data. Попробуйте использовать Fetch API.

1 голос
/ 21 января 2020

Поскольку вы используете запрос GET (не имеет тела), «Content-Type» не используется. Этот заголовок используется для указания серверу, какой тип контента вы отправляете, но вы не отправляете ни одного. Вы должны использовать его только для запросов POST / PUT.

Подробнее об этом см. В этом вопросе .

Чтобы ваш запрос читался как JSON, необходимо установить заголовок в сервер . Это сообщит браузеру, что вы получаете a JSON, который затем будет автоматически проанализирован с помощью ax ios.

...