express 中的高级可选路由

Advanced optional routing in express

我正在尝试使用 express 和 node.js

构建 crud 应用程序

示例查询字符串

/table/?id=78&title=someTitle&code=3

其中 ID、标题和代码是可选的。含义:

但是 问题 要么我必须输入带有空值的整个 url 字符串,要么这些值混合在一起,或者 express 无法识别我的正则表达式模式(模式根据 https://regexr.com 网站有效)

我试过:

  1. https://forbeslindesay.github.io/express-route-tester/

    路线:

    /table/\??(id=)?:id?\&?(title=)?:title?\&?(code=)?:code?
    

    路径:

    /table/?id=78&title=someTitle&code=3
    

    结果:

    Image About express routing result on express-route-tester
website

  2. 创建了我自己的正则表达式:

    \/table\/\??(id=78)?\&?(title=someTitle)?\&?(code=3)?
    

    除非我添加可选的快速参数,否则这将起作用。

预期结果:

Path    
     /table/?id=78

request.params

    { id: '78'} 

---- 
Path
     /table/?code=3

request.params

    { code: '3' }

----
Path
    /table/?id=78&title=someTitle

request.params

    { id: '78', title: 'someTitle' }

PS:我知道我可以通过将正则表达式匹配到request.url来实现这个,但我想要想知道express有没有其他方法。

所以这是答案:

我可以通过使用 req.query 而不是 req.params

来实现

req.query returns 完全符合我想要的输入对象

路径

/table/?id=78&title=someTitle

request.query

{ id: '78', title: 'someTitle' }