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 に答える