Přepsat stav odpovědi koncového bodu v expressjs

Podařilo se mi přesměrovat root '/' do '/users' ale '/users' stav koncového bodu přepíše stav kořenového koncového bodu.

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

Jak je možné zkontrolovat, zda '/users' ke koncovému bodu se přistupuje přes přesměrování nebo ne a pak se nastaví res.status vhodně?

Odpověď

Nejsem si jistý, proč chcete, aby byl jako odpověď /users api zasílán http stav root api, ale níže lze použít hack k rozpoznání, zda jsou požadavky přijaty z kořenového 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));
  }
});