我如何通过带有请求的Express传递请求API响应?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何通过带有请求的Express传递请求API响应?相关的知识,希望对你有一定的参考价值。

我具有以下服务器端设置:

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

我应该如何配置express,以便获取后端并通过前端的API请求传递响应?

目前,我收到以下错误Failed to load resource: the server responded with a status of 500 (Internal Server Error)

答案

也许尝试在您的提取参数中将put方法切换为get方法-方法:'GET'

另一答案

您需要通过JSON发送信息。那是res.json(dataObject);,将被fetch调用中的第二个.then提取。您当前正在尝试使用res.send()

以上是关于我如何通过带有请求的Express传递请求API响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过依赖注入传递 Web API 请求?

如何使用 Express 和 Axios 从我的 get 请求发送响应对象到前端?

使用颤振客户端向 node.js express api 发出 post 请求

如何在 Express.js 服务器上执行 JWT API 请求? (edX API)

如何使用 express js 处理 fetch API 请求

如何在 Express 和 Mongoose 的一个控制器 API 内发出多个“查找”请求?