ExpressJS,路由定义,控制器位置和api文档

时间:2016-07-31 10:18:43

标签: javascript node.js express api-doc

将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);
}

我发现这是正确的方法,因为:

  • 您可以在路线定义上方写下路线文档
    • 如果修改路线,则修改文档
  • 您的控制器上方有路线文档
    • 网址参数/正文内容(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条道路做相同的东西,你可以让它们使用相同的控制器。

  • 我应该继续分离我的控制器和放大器吗?我的路线?
  • 如果是,我该如何记录?
  • 这样的代码组织有什么好处?

1 个答案:

答案 0 :(得分:0)

应该在http://programmers.stackexchange.com页面上提出一个哲学问题。但无论如何......

我使用框架时的个人方法是遵循框架本身的风格,永远不会改变编码风格。对我来说这很重要,特别是如果我与其他开发人员合作。

假设你想带一个新人进入团队。由于您更改了代码的结构方式,因此无法获得更多ExpressJS体验。意味着你必须与新人坐下来解释不同的编码风格。

另一件事是将所有内容都变成一个类是一种矫枉过正的行为。这是一个额外的不必要的复杂层,你和其他人将不得不围绕它。此外,在这种情况下,您不会使用该课程的好处。

如果是我,我会像ExpressJS那样保持编码风格,尽可能简单:)。评论?每条路线都有一个很好的解释,例如:

/**
 * Nice description
 *
 * @param {string}   var-name   description
 * @param {int} var-name   description
 */