快速路由参数

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)
})