Как я могу передать запрос API ответа с экспресс-реагировать? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть следующие настройки на стороне сервера:

router.get(
    "/auth/google",
    passport.authenticate("google", { scope: ['Profile','https://www.googleapis.com/auth/analytics.readonly'] })
);

router.get(
    "/auth/google/callback",
    passport.authenticate("google", { failureRedirect: "/error", session: false }),
    function(req, res) {
        var token = req.user.token;
        res.redirect("/getData?token=" + token);
    }
);

router.get('/getData', function(req, res) {
    var token = req.query.token;
request('https://www.googleapis.com/analytics/v3/management/accounts?access_token=' + token,  
function (error, response, body) {
          let views = []
   JSON.parse(body).items.forEach(view => {
            views.push({
              name: view.webPropertyId + ' - ' + view.name + ' (' + view.websiteUrl + ')'
            })
          })
res.send(views)
});
})

со следующим компонентом на стороне клиента:

     componentDidMount() {
    fetch('http://localhost:5000/getData',
    {
          method: 'put',
          headers: {'Content-Type': 'application/json'}
      })
      .then(res => { 
        if (!res.ok) {
          throw res;
        }
        return res.json()
      }).then(data => {
        this.setState({loading: false, data});
      }).catch(err => {
        console.error(err);
        this.setState({loading: false, error: true});
      });
  }

как мне настроить экспресс такЯ могу получить свой бэкэнд и передать ответ от запроса API на мой фронтэнд?

Прямо сейчас я получаю следующую ошибку Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Вам необходимо отправить информацию через JSON. Это res.json(dataObject);, которое будет получено вторым .then в вызове fetch. В настоящее время вы пытаетесь использовать res.send().

1 голос
/ 04 октября 2019

Возможно, попробуйте переключить метод put на get в параметрах fetch - метод: 'GET'

...