如何编写"中间件"在Node.JS中

时间:2016-09-08 13:21:45

标签: node.js api mobile middleware nosql

如果这个问题过于笼统,请道歉。这不是基于意见的邀请#34;答案。不幸的是,在项目的这个阶段,由于我在这个领域的知识有限,我只需要更有经验的人提供一些指导

在一个大型公司项目中,我有一个基于NOSQL数据模型的Web服务。我对这项服务的设计影响不大。由于数据结构的原因,在监督大型复杂移动应用程序(针对多个平台)的开发时,我注意到有时需要按顺序调用多个端点以获取所需信息。

例如:需要首先调用端点发送某些参数以获取用户ID,然后使用该用户ID获取有关用户的详细信息。系统无法在第一次呼叫时提供用户详细信息。这导致客户端上的复杂数据解析和后台进程。

为了简化移动开发,我们现在想要构建一个"中间件"简化了移动客户端API的图层。该应用程序将中间件称为单一入口点,中间件将调用现有端点来收集必要的数据并将结果传递回客户端。

例如,客户端将要求找到某个用户并使用一个API端点传递该用户的某些属性(例如,用户的所有朋友的名字)。中间件需要对后端进行多次调用:搜索用户,使用结果(用户ID)获取用户的详细信息和朋友,使用交付的朋友' userID用于收集有关朋友的数据。然后,中间件将打包信息并将其发送回客户端。

同事的初步建议表明,Node.JS将是一个以可维护,可扩展的方式开发此类功能的良好框架。

好的,我知道如何运行一个简单的服务器并管理节点系统上的路由,但是你如何组织这个项目,例如文件结构?您将封装哪些组件。在Node之上是否有任何框架可以帮助完成类似的任务?

我不是在寻找"意见和#34;只是为了根据经验或知识提供一些有见地的建议。在您陈述了您不喜欢的内容并提出具体问题后,请随意向下投票(我会尽快遵守)。感谢。

1 个答案:

答案 0 :(得分:1)

  

您将如何组织此项目,例如文件结构?

我在我的express code structure github存储库中描述了我的文件系统布局,该存储库也发布为a stackoverflow answer here

  

您将封装哪些组件。

我认为将接口封装到每个支持API作为"模型"或者"服务"类型模块。如果您正在进行数据库查询,请将它们封装到模型中或至少将相关查询的模块封装起来。

  

Node之上是否有任何框架可以帮助完成类似的任务?

是的,很多。我更喜欢express作为基本的网络应用框架,hapi是另一个强有力的选择。还有其他选项,包括较小的(更多的1用途库)和更大的(更接近全功能的框架),如loopback或sails.js。