使用 Express 和 NodeJS 构建 REST API 的最佳实践

Posted

技术标签:

【中文标题】使用 Express 和 NodeJS 构建 REST API 的最佳实践【英文标题】:Best Practice to Structure REST API Using Express with NodeJS 【发布时间】:2014-10-31 22:59:20 【问题描述】:

这是一个独立的代理应用程序。我是 Express 和 Node 的新手,所以我想要一些关于如何构建这个应用程序结构的建议。

出发:

我只有一个 app.js 文件,它是服务器并打开 Web 套接字。 另一个 (router.js) 具有 Router() 和 REST 调用列表。

但是,此应用程序将进行大量 REST 调用,并且预计会有大量数据传入和请求传出。因此,仅在 router.js 中有一个 get、post 等调用的列表就会很快变得杂乱无章。有没有更好的方法来设计这个应用程序?

【问题讨论】:

【参考方案1】:

为“包含”路由创建单独的文件。例如:

// stored as ./routes/abc.js
var middleware = require("../lib/middleware");
module.exports = 
  setup: function(app) 
    app.get("/abc/def", middleware.fn1, middleware.fn2, ..., this.def);
    app.get("/abc/[...]", this.[...]);
  ,
  def: function(req, res) 
  ,
  ...

然后在你的 ./routes/index.js 中类似:

var abc = require("abc");
module.exports = function(app) 
  ...
  abc.setup(app);
  ...
;

最后当然是在你的 app.js 中,你会得到:

var express = require("express"),
    app = express();
require("routes")(app);
var port = process.env.PORT || 12345;
app.listen(port, function() 
  console.log('Listening on port %d', port);
);

【讨论】:

我喜欢这项技术,但建议不要将方法命名为“bind”,因为维护人员可能会将其与原型“bind”方法混淆。

以上是关于使用 Express 和 NodeJS 构建 REST API 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章