Existe-t-il un moyen de faire cela sur un seul appel de fonction?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
Quelque chose comme:
app.get("/", "/blabla", "/blablablabla", todo );
Je sais que c'est un gâchis de syntaxe, mais juste pour donner une idée de ce que je voudrais réaliser, un éventail de routes serait génial!
Quelqu'un sait-il comment faire ça?
Réponses:
Je suis tombé sur cette question en cherchant la même fonctionnalité.
@Jonathan Ong a mentionné dans un commentaire ci-dessus que l'utilisation de tableaux pour les chemins est obsolète, mais elle est explicitement décrite dans Express 4 et fonctionne dans Express 3.x. Voici un exemple de quelque chose à essayer:
De l'intérieur de l'
request
objet, avec un chemin de/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:Notez ce qui se passe avec les paramètres: il est conscient des groupes de capture et des paramètres dans tous les chemins possibles, qu'ils soient ou non utilisés dans la requête en cours.
Ainsi, empiler plusieurs chemins via un tableau peut être fait facilement, mais les effets secondaires sont peut-être imprévisibles si vous espérez récupérer quelque chose d'utile dans le chemin utilisé par le biais de paramètres ou de groupes de capture. C'est probablement plus utile pour la redondance / aliasing, auquel cas cela fonctionnera très bien.
Edit: Veuillez également voir la réponse de @ c24w ci-dessous .
Edit 2: C'est une réponse modérément populaire. Veuillez garder à l'esprit qu'ExpressJS, comme la plupart des bibliothèques Node.js, est un festin déplaçable. Bien que le routage ci-dessus fonctionne toujours (je l'utilise pour le moment, une fonctionnalité très pratique), je ne peux pas garantir la sortie de l'objet de requête (c'est certainement différent de ce que j'ai décrit). Veuillez tester attentivement pour vous assurer d'obtenir les résultats souhaités.
la source
:var
définit lereq.param
que vous n'utilisez pas. il n'est utilisé que dans ce cas pour définir l'expression régulière.(bla|blabla)
définit l'expression régulière pour qu'elle corresponde, donc elle correspond aux chaînesbla
etblablah
.?
rend l'ensemble de l'expression régulière facultative, donc il correspond/
également.la source
/bla(bla)?
fonctionne également, mais tous les paramètres après ne se remplissent pas correctement (c'est/bla(bla)?/:value
-à- dire ne se remplissent pasreq.params.value
). Quelqu'un sait pourquoi?req.params.var
mais vous devez vous assurer que vous avezreq
passé à la fonctionVous pouvez en fait passer un tableau de chemins , comme vous l'avez mentionné, et cela fonctionne très bien:
la source
Juste pour élaborer sur la réponse de Kevin , ceci est tiré de la documentation 4.x :
Ils ont quelques exemples , notamment:
la source
Je suis allé pour un:
la source
exiger le fichier de votre itinéraire d'origine et définir le nouvel itinéraire comme ceci
la source