7
votes

Exécutez les middleware Express pour tous les itinéraires, sauf cela commencent par / API?

J'ai un middleware express qui réagit sur le serveur comme tellement, placé à la fin, après toutes les autres routes: xxx

car aucun itinéraire n'est spécifié, ce middleware sera exécuté pour toutes les demandes . Je voudrais exclure tous les itinéraires / API de celui-ci. Le problème est même si je crée toutes les itinéraires API avant ce middleware, il est toujours possible que ce middleware soit exécuté sur / API / NONXISTENTENDPOINT Chemin.

Pour être plus précis Je cherche une regex qui rendrait ce middleware exécuté pour tous les chemins, à l'exception de tout chemin commençant par / API .

Merci!


J'ai déjà regardé Ceci alors post mais je n'ai rien trouvé utile pour moi.

et Ce message contient beaucoup de solution de contournement qui n'est pas non plus ce que je cherche.

Ce message POST vous demande de Vérifiez conditionnellement l'URL à l'intérieur du middleware.


0 commentaires

3 Réponses :


1
votes

Voici comment je gère des itinéraires d'API non existants. J'ai API code> dossier contenant tout mon itinéraire API, idéalement, chacun dans leur propre fichier JS et API / Index.js nécessite toutes ces itinéraires comme celui-ci

app.use('/api', require('./api'));
app.use(function(req, res) {
  console.log('dosomething');
  res.send('Hello something').end();
});


0 commentaires

15
votes

Essayez ceci:

app.use(/^\/(?!api).*/, function(req, res) {
  Router.run(routes, req.path, function(Handler) {
    var markup = React.renderToString(<Handler />);
    res.send(swig.renderFile('views/index.html', { html: markup }));
  });
});


0 commentaires

0
votes

Je suis sûr que je suis sûr que j'avais exactement le même cas d'utilisation que Sahat, voici la syntaxe que j'ai utilisée pour la configuration de deux itinéraires pour gérer / API correspondant et manque dans express.js: xxx

Ceci suppose que toutes vos issues de l'API suivent un modèle de / API / * .


0 commentaires