【问题标题】:Can't fulfill a get request using express.js?无法使用 express.js 完成获取请求?
【发布时间】:2018-10-29 15:30:33
【问题描述】:

这是我的服务器代码:

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 请求从未得到满足。

【问题讨论】:

  • 这真的没有意义。 req 是一个对象,描述了对 express 服务器的请求。它不是您发出传出请求的对象。
  • 我无法编译上面的代码(至少如果不付出比我愿意猜测的差距更多的努力)。请提供minimal reproducible example。从hello world 开始,然后将您的代码添加到其中可能是一个不错的选择。
  • @Quentin 然后我发出传出请求的对象是什么 - 因为目前这肯定不起作用?
  • 甚至可以从服务器发出请求吗?
  • 以节点获取为例

标签: javascript typescript express get


【解决方案1】:

我觉得应该是这样的

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() 属性。检查this 以供参考。

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

【讨论】:

    猜你喜欢
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2017-09-20
    • 1970-01-01
    • 2013-10-26
    • 2011-07-17
    • 1970-01-01
    相关资源
    最近更新 更多