2016-07-31 44 views
0

使用expressJS 4.X与6.x的的NodeJSExpressJS,路线清晰,控制位置和API文档

我以前定义我的路线是这样的:

/** 
* @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错误代码返回
    • IDE像webstorm使用了自动完成
那些评论

寻找最佳实践,我已经讲了很多次,我应该创建一个控制器,使路线确定指标的其他地方,用下面的代码结尾:

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

唯一的好理由我组织的这种方式见你的代码是,如果你有两条道路做同样的事情,你可以让它们使用同一个控制器。

  • 我应该不断分开我的控制器&我的路线?
  • 如果是,我应该如何记录它?
  • 这样的代码组织有什么好处?

回答

0

应该问一个哲学问题的位,而不是http://programmers.stackexchange.com页。但在任何情况下......我使用框架时的个人方法是遵循框架本身的风格,而不改变编码风格。对我来说这很重要,尤其是如果我与其他开发人员合作

让我们假设你想让某个新人加入团队。改变代码结构的方式后,您无需再需要ExpressJS体验。这意味着你必须和新人坐下来解释不同的编码风格。

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

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

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