更大的项目Node.js和RESTful API

时间:2016-03-30 05:25:04

标签: node.js rest architecture

我正在研究node.js,这看起来真的很不错。我已经使用了很多不同的技术和服务器,主要是php和Java(jsp),但涉及到som RoR和Python。

我发现node.js非常容易启动和运行,使用起来感觉非常自然,我找到了一些很好的入门级教程。

我只是缺少一些中间资源。例如,在创建更大的框架或api时,您将如何构建或构建它。我设置了一些较小的api来试试它会出现这样的情况:

我已经使用 Express框架来创建一个http服务器,监听一个端口,设置一个快速对象并绑定一些请求。

然而,如果我考虑扩大用于生产的API的大小,或者想要做其他的东西,比如服务网页,这些已经非常小,并且目的一直在学习。我发现很难看出架构的外观。

由于我还是node.js的新手,这很模糊,但我主要考虑的事情是,如果你通常将所有api保存在一个文件中,或者是否有很好的方法将它分成模块?如果有人知道任何资源在node.js中工作时更多地讨论如何设计架构

对于模糊的问题表示抱歉,感谢您的阅读。

1 个答案:

答案 0 :(得分:3)

在我看来,如果您想构建复杂或大型的API,Express是一个很好的方法。

其中很容易测试(例如使用Mocha或Jasmine)并且可以自定义,特别是由于它的middlewares

对于目录结构,我通常使用的是(至少)以下内容:

  • app.js :主要入口点。将创建快速应用程序,指示每个路由前缀使用哪个控制器,并分配中间件。 Example from a previous project
  • 控制器:将包含控制器,处理请求的函数,采用与标准MVC框架相同的样式(例如UserController,...)。每个控制器都会创建一个express Router对象并将其导出。在控制器内部,各个处理程序负责各个API请求,例如 / api / users / list 。它将使用一些库来访问您的数据(例如Mongoose for MongoDB),然后将响应发送到客户端。 Example (UserController.js)
  • 模型:将包含具有所有属性和方法的模型。就我而言,它将是Mongoose模型。 Example (Song.js)
  • 中间件:将包含项目的各种中间件。一个实际的例子是中间件检查传入请求中的访问令牌,如果没有则返回403 HTTP错误。 Example (AuthMiddleware.js)
  • 帮助者:各种助手
  • 测试:您API的单元测试

这可能是最小的目录组织。最重要的是,您可能希望使用模板引擎(如EJS)来提供网页。看看« Use EJS to template your node application »

这只是为了让您了解快速目录结构的外观,但当然有很多(更好的?)其他可能性。希望能为您提供快速有用的见解:)