2016-07-31 73 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 
*/