Facultatif paramètre GET en Exprimer l'itinéraire
Suivantes:
app.get('/foo/start/:start/end/:end', blah.someFunc);
correspond
/foo/start/1/end/4
mais je veux qu'elle correspond également à un paramètre facultatif
/foo/start/1/end/4/optional/7
J'ai essayé ceci:
app.get('/foo/start/:start/end/:end(/optional/:value)?', blah.someFunc);
mais il ne correspond pas à l'une des deux exemples ci-dessus. Je pense que c'est parce que j'essaie de lui donner un RegExp
quand il s'attend à quelque chose d'autre?
Grâce.
Vous ne pouvez pas mélanger des chemins avec les expressions régulières, qui est ce que vous faites. Utiliser un chemin d'accès ou une expression régulière. expressjs.com/api.html#app.VERB
OriginalL'auteur ale | 2013-09-04
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas ajouter une autre règle à l'avant de celui que vous avez, comme ce
Il sera utilisé avant que l'un sans l'option de valeur.
Si vous souhaitez utiliser une seule ligne essayez ceci:
voir les docs pour un exemple.
J'ai édité ma réponse pour ajouter cette option.
Performance killer... Regexp pourrait être plus efficace.
Combien de plus? Avez-vous quelques données, je peux regarder ce que c'est?
L'entretien cachés problème ici est que l'ordre est important. Si certains sont mal informés dev vient plus tard et les commutateurs de la commande de votre définitions de route, votre fonctionnalité disparaît. Vous pouvez gérer cela avec un itinéraire à l'aide d'expressions régulières, qui est une caractéristique standard de l'express.Routeur: expressjs.com/4x/api.html#app.VERB
OriginalL'auteur Alberto Zaccagni
Si vous utilisez Express 4.x Puis je pense que c'est mieux d'utiliser la matrice de format pour la route.
Par exemple, j'ai itinéraire
/service
qui donne à tous les liste des services et même de l'itinéraire lorsqu'il est utilisé avec id/service/id/:id
donne de service unique avec l'id dans le param.ce besoin d'expression régulière , c'est propre.
OriginalL'auteur Arun Killu
Dans cet exemple, si l'url est /bonjour ou /bonjour/monde il fonctionne. L' ? rend le paramètre devenu facultatif (express 4).
OriginalL'auteur heavyrick
Vous pouvez également utiliser des expressions régulières dans les itinéraires. Peut-être quelque chose comme:
Pourquoi? Express se traduit par tous route de cordes pour les expressions régulières. À l'aide de regexes est directement visée à tous les coins de la documentation: expressjs.com/4x/api.html#request
Je sais que, c'était du sarcasme.
OriginalL'auteur MateodelNorte