nodeJS 6.x での ExpressJS 4.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 は、これらのコメントをオートコンプリートに使用します
ベスト プラクティスを探していると、Controller を作成し、別の場所でルート定義を作成し、次のコードで終了するように何度も言われました。
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 つの道路がある場合、それらに同じコントローラを使用させることができるからです。
- コントローラーとルートを分離し続ける必要がありますか?
- はいの場合、どのように文書化すればよいですか?
- このようなコード編成の利点は何ですか?