使用 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 + Mongoose 构建的 NodeJs REST API 服务器进行单元测试?
如何(重新)在 nodejs/express 中使用 redis 客户端连接?