Express Js - 更改参数传递给 ODATA 样式的方式

Express Js - Change the way parameter is passed to an ODATA style

我想知道是否有人尝试/或知道一种让 express 接受 ODATA 样式参数的方法。例如:

标准 Express 样式传入参数示例:

http://www.blah.com/user/1234

app.get('/:user_id', function (req, res){ 
    console.log('Test user_id param: ' + req.params.user_id);
});

ODATA风格的传入参数示例(这是我想做的):

http://www.blah.com/user(1234)

app.use('\(:user_id\)', function (req, res){ 
        console.log('Test param: ' + req.params.user_id);
    });

有人做过这样的事吗?关于如何实现接近于此的东西的建议?

谢谢。

如@jfriend00 所建议,您可以向 Express 的路由解析器提供您自己的正则表达式。这样的事情应该适用于您的用例:

app.get(/^\/user\((.*)\)$/, function (req, res) {
    // Your user id is now in req.params[0]
}

参见docs

根据文档,它还应该与 "simpler" 风格的正则表达式启发的路由一起工作,只需要一个通配符,就像这样:

app.get("/user(*)", function (req, res) {
    // still in req.params[0]
}

以下是使用 express@^4.0.0

的方法
app.get("/User\(:user_id\)", function(req, res) {
  res.send({
    id: req.param("user_id")
  })
})

这个请求:

GET /User(1) HTTP/1.1

会 return :

{ "id": "1" }