我的路线可以定义为
app.route('/api/*/*/*')
.get(function(req, res){
var entitya = req.params['0'];
var entityb = req.params['1'];
var entity3 = req.params['2'];
})
.post(function(req, res){
res.send('some stuff here');
});
如果我传递了所有三个参数,但是如果我在没有任何参数的情况下进行后期路线就无法找到它,或者如果我没有完成所有三个参数而进入获取路线,那么它将无法找到网址。
有没有办法可以在路线定义中省略*并使get参数动态化?所以,如果我需要传递3个参数,我可以,或2,甚至5?
谢谢!
答案 0 :(得分:0)
您可以为不同的API网址绑定routers。
类似这样的事情
app.use('/api/v1/function1', router1);
app.use('/api/v1/function2', router1);
或者,您可以将正则表达式用作URL名称
app.get( /^\/api\/([a-z0-9]+)\/([a-z0-9]+)$/, function(req,res) {
req.params[0]; //first match of reges
req.params[1]; //second match of reges
});
app.post( /^\/api\/([a-z0-9]+)\/([a-z0-9]+)$/, function(req,res) {
req.params[0]; //first match of reges
req.params[1]; //second match of reges
});
答案 1 :(得分:0)
您可以在URL中使用变量,并从req.query
对象中获取变量。
例如:
URL
/ api / endpoint?entitya = a&entityb = ab&entity3 = 123
路线
app.route('/api/endpoint');
然后从req.query中获取它们。
但由于任何原因都必须使用参数,这是一种简单的方法
路线是
app.route('/api/*')
和一个获取所有动态参数的数组
const entity = req.params['0'] ? req.params['0'].split('/') : [];