将 expressJS 4.X 与 nodeJS 6.x 一起使用
我以前是这样定义我的路线的:
/**
* @api {get} /users/:userId Get a user
* @apiName GetUser
* @apiGroup User
*
* @apiParam {Integer} userId Users unique ID.
*
* @apiSuccess (Success 201) {text} User email
* @apiError {text} 401/Unauthorized.
* @apiError {text} 404/Not Foud Unknown userId
*/
router.get('/users/:userId', function(req, res, next) {
const userId = req.params.userId;
//get user
res.json(user);
}
我发现这是正确的方法,因为:
- 您在路由定义之上编写路由文档
- 如果修改路线,则修改文档
- 您的控制器上方有路由文档
- URL 参数/正文内容 (req.params.name // req.body.name)
- 要返回的 HTTP 错误代码
- 像 webstorm 这样的 IDE 使用这些注释来自动完成
为了寻找最佳实践,我被多次告知我应该创建一个控制器并在其他地方进行路由定义,以以下代码结尾:
class UserController {
constructor() {
this.listAll = this.listAll.bind(this);
}
getUser(req, res, next) {
const userId = req.params.userId;
//get user...
res.json(user);
}
}
router.get('/users/, UserController.getUser);
我看到以这种方式组织代码的唯一充分理由是,如果您有 2 条道路做同样的事情,您可以让它们使用相同的控制器。
- 我应该继续分开我的控制器和我的路线吗?
- 如果是,我应该如何记录它?
- 这样的代码组织有什么好处?