Express Js - 更改参数传递给 ODATA 样式的方式
Express Js - Change the way parameter is passed to an ODATA style
我想知道是否有人尝试/或知道一种让 express 接受 ODATA 样式参数的方法。例如:
标准 Express 样式传入参数示例:
app.get('/:user_id', function (req, res){
console.log('Test user_id param: ' + req.params.user_id);
});
ODATA风格的传入参数示例(这是我想做的):
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" }
我想知道是否有人尝试/或知道一种让 express 接受 ODATA 样式参数的方法。例如:
标准 Express 样式传入参数示例:
app.get('/:user_id', function (req, res){
console.log('Test user_id param: ' + req.params.user_id);
});
ODATA风格的传入参数示例(这是我想做的):
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" }