快速路由参数
Express Routing Params
我希望从这个 url 'http://localhost:3000/#/quote/edit/?quote_number=1&line_number=1' 得到这个查询
从这条快线路线
router.route('/quote/:quote_number&:line_number')
.get(checkAuthentication, (req, res) => {
let request = new sql.Request(pool)
let get_lines_query = `
select *
from quote_line
where quote_number = ${req.query.quote_number} and
line_number = ${req.query.line_number}`
但它正在调用与
不同的查询
route router.route('/quote/:quote_number')
首先,您提供的URL与路线不符。你的路线是去 /quote/number&line
但你的 URL 的形式是 /quote/edit/?quote_number=number&line_number=line
.
其次,写成?key=value&key2=value2
的参数称为查询参数,是一种特殊的、标准的参数形式,不需要自己绑定。 Express 会将它们解析为 req.query
对象,而无需您指定绑定。因此,您需要做的就是将路线更改为 /quote/edit
就可以了。
顺便提一下,请不要直接将 URL 参数粘贴到您的 SQL 查询中。这就是你如何结束 SQL 注入攻击。根据您使用的 SQL 包,应该有一种方法可以在您的查询中使用绑定参数。
尝试将您的代码更新为:
router.route('/quote/:quote_number/:line_number').get(function (req, res) {
let quote_numer = req.params.quote_number;
let line_number= req.params.line_number;
res.send(quote_numer + "" + line_number)
})
我希望从这个 url 'http://localhost:3000/#/quote/edit/?quote_number=1&line_number=1' 得到这个查询 从这条快线路线
router.route('/quote/:quote_number&:line_number')
.get(checkAuthentication, (req, res) => {
let request = new sql.Request(pool)
let get_lines_query = `
select *
from quote_line
where quote_number = ${req.query.quote_number} and
line_number = ${req.query.line_number}`
但它正在调用与
不同的查询route router.route('/quote/:quote_number')
首先,您提供的URL与路线不符。你的路线是去 /quote/number&line
但你的 URL 的形式是 /quote/edit/?quote_number=number&line_number=line
.
其次,写成?key=value&key2=value2
的参数称为查询参数,是一种特殊的、标准的参数形式,不需要自己绑定。 Express 会将它们解析为 req.query
对象,而无需您指定绑定。因此,您需要做的就是将路线更改为 /quote/edit
就可以了。
顺便提一下,请不要直接将 URL 参数粘贴到您的 SQL 查询中。这就是你如何结束 SQL 注入攻击。根据您使用的 SQL 包,应该有一种方法可以在您的查询中使用绑定参数。
尝试将您的代码更新为:
router.route('/quote/:quote_number/:line_number').get(function (req, res) {
let quote_numer = req.params.quote_number;
let line_number= req.params.line_number;
res.send(quote_numer + "" + line_number)
})