ExpressJS route regex

后端 未结 4 1157
别跟我提以往
别跟我提以往 2021-01-11 19:42

I have route:

app.get(\'/:id\', routes.action);

It works fine, but I need skip robot.txt and other (humans ....) I create rege

相关标签:
4条回答
  • 2021-01-11 19:50

    If you want to avoid a route matching a static file that exists physically, simply put the static middleware before the call to the app.router.

    Then the static file (such as robots.txt) will be delivered and these calls will not get through to your routing.

    Problem solved ;-).

    0 讨论(0)
  • 2021-01-11 20:14

    Internally, the strings that you give to the Express router are just converted into regexes anyway. If you look at the code, you can see that you can just pass a regex directly.

    app.get(/^\/[a-z]{0,10}$/, routes.action);
    

    The docs also have examples.

    0 讨论(0)
  • 2021-01-11 20:16

    Put the regex in parentheses like this:

    app.get('/:id(^[a-z]{0,10}$)', routes.action);
    
    0 讨论(0)
  • 2021-01-11 20:17

    If you need it for multiple routes :

    app.routes.get 
    

    is an array having all of the get routes. You can change the regex object for the routes you need to change.

    0 讨论(0)
提交回复
热议问题