[英]NodeJs Express app.get that handles both query and params
我正在尝试创建REST服务。 下面的路由将执行一个存储过程,该过程将返回json结果
app.get('/spparam', function (req, res) {
var sql = require("mssql");
// config for your database
var id=0;
var config = {
user: 'username',
password: 'password',
server: 'hostname',
database: 'databasename'
};
// connect to your database
sql.connect(config, function (err) {
if (err) console.log(err);
// create Request object
var request = new sql.Request();
if(!mylib.isEmptyObject(req.query)){
id=req.query.id;
}else if(!mylib.isEmptyObject(req.params)){
id=req.params["id"];
}
// Executing Stored Prcoedure
request.input('requestid', sql.Int, id)
.execute("Request_Get_ById").then(function(recordSet) {
//console.dir(recordsets);
//console.dir(err);
res.send(recordSet);
sql.close();
}).catch(function(err) {
console.log(err);
});
});
});
我想通过创建一个处理查询(/ spparam?id = 1)和参数(/ spparam /:id /)的路由来最小化代码。 这可能吗? 有没有更好的方式来处理我需要的东西?
是的,您可以使用Express来做到这一点,例如:
app.get('/spparam/:id?', function (req, res) {
const id = req.params.id || req.query.id;
// the rest of your function, and use id without caring about whether
// it came from params or query
// change order if you want to give preference to query
}
Express.js文档说它使用路径到正则表达式进行路由匹配。 在那里,您可以看到以下报价:
可以在参数后加上问号(?),以使参数可选。
在javascript中,构造var a = b || c
如果b
不是false-y , var a = b || c
会将b
的值分配给a
;否则,它将c
的值分配给a
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.