如何使用nodejs / express在同一端点中使用GET和POST方法

时间:2020-08-09 01:25:45

标签: javascript node.js express nodejs-server

问题

你好

我想知道如何创建一个端点,该端点首先使用POST方法登录并获取令牌,然后使用该令牌并在GET方法中使用它来访问某些数据。

正如您将在代码中看到的那样,我目前分开了POST和GET的逻辑,但是我的目的是要使端点能够同时使用这两种方法。

这个想法是,在POST方法将令牌返回给我之后,我以后可以在GET方法中使用它。

感谢您的帮助和及时的答复!

代码

app.post('/api/datas/login', async(req, res) =>{
  const url = '...';
  const options = {
    email: process.env.EMAIL,
    password: process.env.PASSWORD
  }
  const call = await axios.post(url, options)
  const token = call.status === 200 ? call.data.token : null;
  res.send({
    status: call.status,
    message: 'Logged In'
  })
});

app.get('/api/datas/alldata', async(req, res) =>{
  try {
    const url = '...'
    const call = await axios.get(url,{ 
      headers: {
        "Authorization" : `Bearer ${token}` //I need to use the token value from the POST method here!
      }
    });
    const data = call.status === 200 ? call.data : null;
    console.log(data);
    res.status(200).json(data);

  } catch (error) {
    res.status(500).send({ message: error });
  }
})

1 个答案:

答案 0 :(得分:0)

是的,如果使用app.all()而不是post()get(),应该有可能(尽管不推荐)。

您可以获取请求的方法,并通过查看req.method来采取相应的行动。

有关更多信息:https://expressjs.com/en/guide/routing.html