簡體   English   中英

我的控制器應該采用(res,req)參數還是已經提取的參數?

[英]Should my controller take the (res, req) params or already extracted params?

我想知道我應該以哪種方式在expressJS中組織路由:

Controller中的參數解析

router.get('/users/:id', UserController.get);

class UserController {
  get(res, req) {
    var id = res.params.id;
    UserModel.get(id, function(user) {
      res.send(user);
    }
  }
}

在Route中解析參數

router.get('/users/:id', function(req, res) {
  var id = req.params.id;
  UserController.get(id, function(user) {
    res.json(user);
  }
});

class UserController {
  get(id, fn) {
    UserModel.get(id, fn);
  }
}

我發現在Route中解析第二個版本的Params更容易

  • 單元測試
  • 如果URL參數或請求正文發生更改

但是我發現的大多數示例都使用第一個版本,為什么?

如果您考慮一個更大,更混亂的實際應用程序,其路由名稱不再與控制器名稱等匹配,那么將完整的路由表(所有router.xxx調用)放在一個位置可能會有所幫助。 routes.js 對於給定的URL,這使新開發人員更容易確定哪個代碼處理哪個URL。

如果將所有參數解析都包含在routes.js ,那么它將變得非常混亂,並且您可能會失去將所有這些都收集到一個文件中的某些好處。

就是說,沒有理由將路由,參數解析/響應格式以及控制器邏輯分別放入各自的模塊中,從而無法兼得兩者的優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM