使用 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 的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

express+gulp构建项目项目目录结构

NodeJS、Express 和多事的 Socket.io

如何对使用 Express + Mongoose 构建的 NodeJs REST API 服务器进行单元测试?

如何(重新)在 nodejs/express 中使用 redis 客户端连接?

利用angular4和nodejs-express构建一个简单的网站——设置跨域访问和安装基本依赖构建数据库

API 中未显示数据(NodeJS + Express)