首页 > 解决方案 > 无法使用 express.js 完成获取请求?

问题描述

这是我的服务器代码:

express
  .Router()
 .post('/authFB', async (req, res) => {
   // const agent = express();
    req.query = {
      client_id: 'ID',
      redirect_uri: `https://localhost:3000/`,
      client_secret: 'SECRET',
      code: Object.keys(req.body)[0]
    };

    req.baseUrl = `https://graph.facebook.com`

    const v = await req.get(`/v3.2/oauth/access_token`)
     v.body
  })

我遇到的问题是 'v' 始终未定义 - 我已经通过 PostMan 测试了 facebook 请求并且它正在工作 - 似乎我的 get 请求从未得到满足。

标签: javascripttypescriptexpressget

解决方案


我认为应该更像这样

const got = require('got'); // I am using got for api call
express
    .Router()
    .post('/authFB', async (req, res) => {
        // const agent = express();
        const query = {
          client_id: 'ID',
          redirect_uri: `https://localhost:3000/`,
          client_secret: 'SECRET',
          code: Object.keys(req.body)[0]
        };
        const baseUrl = `https://graph.facebook.com`

        const v = await got(`${baseUrl}/v3.2/oauth/access_token`, { query });
        console.log(v.body);
        res.send(v.body);
    });

在这里,数据由“got”获取,并且可以将响应发送回客户端或以任何可能的方式使用它。

您在这里所做的将是一个反模式,因为您正在尝试编辑不推荐的快速请求对象,除非用于身份验证和应用程序级别所需的其他操作。

此外,该 req 是 express.Request 类型。它没有 get() 属性。检查供您参考。

希望这能很好地解释你的问题!!!干杯:)


推荐阅读