首页 > 解决方案 > 覆盖expressjs中端点的响应状态

问题描述

我设法将根重定向'/''/users''/users'端点状态覆盖了根端点状态。

app.get('/', (req, res) => {
  res.redirect(301, '/users');
});
    
app.get('/users', (req, res) => {
  res.status(200).json(data.filter(user => user.isActive === true));
});

如何检查'/users'端点是否通过重定向访问然后res.status适当设置?

标签: javascriptexpress

解决方案


我不确定您为什么要发送根 api http 状态以响应 /users api,但是可以应用以下 hack 来识别是否从根 api 接收到请求。

app.get('/', (req, res) => {
  res.redirect(301, '/users?redirect=true');
});
    
app.get('/users', (req, res) => {
  const redirect = req.query.redirect;
  if (redirect) {
    res.status(301).json(data.filter(user => user.isActive === true));
  } else {
    res.status(200).json(data.filter(user => user.isActive === true));
  }
});

推荐阅读