0

我想修改中间件中的路由参数:

express = require 'express'
bodyParser = require 'body-parser'

app = express()
app.use(bodyParser.json())

// app.param(...) is deprecated

app.use (req, res, next) ->
  console.log req.params.id // undefined
  // req.param() is deprecated
  next()

app.get '/test/:id', (req, res, next) ->
  console.log(req.params.id) // correct
  res.json({ id: req.params.id })

我如何在中间件中做到这一点?在中间件执行期间似乎尚未解析参数...

4

1 回答 1

1

我找到的唯一方法是:

express = require 'express'
bodyParser = require 'body-parser'

app = express()
app.use(bodyParser.json())

middleware = (req, res, next) ->
  console.log req.params.id // works!!!
  next()

routeHandler = (req, res, next) ->
  console.log(req.params.id) // correct
  res.json({ id: req.params.id })

app.get '/test/:id', [middleware, routeHandler]

这种方法的缺点是我必须“手动”在每个路由处理程序前面包含中间件。我希望在 restify 中有类似的东西:在解析/识别路由之后执行的中间件,并在执行 routeHandler 之前执行。

于 2015-02-13T10:04:48.427 回答