# router.route

返回单个路由的实例,然后您可以使用该实例处理带有可选中间件的 HTTP 动词。

# 概要

router.route(path)

# 描述

返回单个路由的实例,然后您可以使用该实例处理带有可选中间件的 HTTP 动词。使用 router.route() 来避免重复的路由命名,从而避免输入错误。

在上面的 router.param() 示例的基础上,以下代码显示了如何使用 router.route() 来指定各种 HTTP 方法处理程序。

const router = express.Router()

router.param('user_id', (req, res, next, id) => {
  // sample user, would actually fetch from DB, etc...
  req.user = {
    id,
    name: 'TJ'
  }
  next()
})

router.route('/users/:user_id')
  .all((req, res, next) => {
  // runs for all HTTP verbs first
  // think of it as route specific middleware!
    next()
  })
  .get((req, res, next) => {
    res.json(req.user)
  })
  .put((req, res, next) => {
  // just an example of maybe updating the user
    req.user.name = req.params.name
    // save user ... etc
    res.json(req.user)
  })
  .post((req, res, next) => {
    next(new Error('not implemented'))
  })
  .delete((req, res, next) => {
    next(new Error('not implemented'))
  })

此方法重用单个 /users/:user_id路径并为各种 HTTP 方法添加处理程序。

注意:当您使用 router.route()时,中间件排序基于路由创建的时间,而不是方法处理程序添加到路由的时间。为此,您可以认为方法处理程序属于添加它们的路由。

Last Updated: 3/22/2023, 7:27:28 PM