【问题标题】:How to write a "middleware" in Node.JS如何在 Node.JS 中编写“中间件”
【发布时间】:2016-09-08 13:21:45
【问题描述】:

如果这个问题过于笼统,我们深表歉意。这不是邀请“基于意见”的答案。不幸的是,在项目的这个阶段,由于我在这个领域的知识有限,我只需要来自更有经验的人的一些指导

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

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

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

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

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

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

我不是在寻找“意见”,只是为了基于经验或知识的一些有见地的建议。在您说明您不喜欢这个问题并提出具体问题进行澄清后,请随意对这个问题投反对票(我会尽快遵守)。谢谢。

【问题讨论】:

    标签: node.js api mobile middleware nosql


    【解决方案1】:

    你会如何组织这个项目,例如文件结构?

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

    您将封装哪些组件。

    我认为将每个支持 API 的接口封装为“模型”或“服务”类型的模块是可以的。如果您正在进行数据库查询,则可以将它们封装到模型或至少相关查询的模块中。

    是否有任何基于 Node 的框架可以帮助完成这样的任务?

    是的,很多。我更喜欢 express 作为基本的 Web 应用程序框架,而 hapi 是另一个强有力的选择。还有其他更小(更多单用途库)和更大(更接近功能齐全的框架)的选项,例如 loopback 或sails.js。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2014-07-05
      • 1970-01-01
      • 2016-07-02
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多