@lebedev112

Почему я получаю странный ответ на фронте от API?

Делаю небольшое приложение с React на фронте и Node (Express) на бэкэ.

Проблема: посылаю GET/POST запрос на бэк. Результат совершенно отличается, если использовать Postman. При GET запросе возвращает какую-то статистику, а не реальные данные, которые пришли с сервера
Куда копать? В чем проблема? Даже не знаю, как загуглить это.

Код на фронте (по кнопку делается GET запрос, приложение запущено на порту http://localhost:3000)
const App = () => {

  const sendRequest = async () => {
    const res = await fetch('/api/sendrequest')
    console.log(res)
  }

  return (
    <div className="App">
      <button onClick={sendRequest}>Send</button>
    </div>
  );
}

Предварительно на фронте все запросы проксирую на локальный сервер localhost:5000
(указываю настройки proxy в package.json)
"proxy": "http://localhost:5000"

Код на бэкэ (уже подключенный корректно роут, при посылании запроса консоль явно регестрирует запрос, о чем печатает в консоле)
router.get('/', async (req, res) => {
    try {
        console.log('[GET]')
        return res.status(200).send('All done!')
    } catch(e) {
        console.log('Server Error: ', e.message || e)
        return res.status(500).json({message: 'Server Error'})
    }
})

Результат кода при использовании Postman
5f05effa7bbcc223806854.png

Результат на фронте:
5f05f02f62a12813180174.png

В чем беда? Что я делаю не так?
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
@lebedev112 Автор вопроса
Проблему решил, в коде на Node.js нужно было именно посылать JSON
Вместо

res.status(201).send('All done!')
нужно
res.status(201).json('All done!')

А так же распарсить полученный JSON на фронте
const res = await fetch('/api/sendrequest')
const data = await res.json()
console.log(data))


За наводку благодарю Алексея Яркова.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
yarkov
@yarkov
Помог ответ? Отметь решением.
А если console.log(await res.json())?
Ответ написан
@aidarDev
const sendRequest = async () => {
    const res = await fetch('/api/sendrequest')
    const data = await res.json();
    console.log(data);
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы