Node.js Express特定于路由与顶级泛型解析

时间:2016-12-10 14:15:46

标签: javascript node.js express

使用顶级通用解析有什么好处:

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

而不是路由特定的解析:

// create application/json parser
var jsonParser = bodyParser.json()

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

// POST /newUser gets urlencoded bodies
app.post('/newUser', urlencodedParser, function (req, res) {
  if (!req.body) {
      return res.sendStatus(400)
  } else {
  ...
  }
})

根据身体解析器readme,它说特定路线是最推荐的方式。为什么?为什么要使用它而不是顶级泛型解析?

1 个答案:

答案 0 :(得分:2)

原因是无条件地执行中间件意味着当请求已经不满足任何先决条件时(例如匹配路由或满足身份验证要求),您可能会执行不必​​要的工作。