使用 restful API 在 nodejs 上实现微风

Posted

技术标签:

【中文标题】使用 restful API 在 nodejs 上实现微风【英文标题】:Implementing breeze on nodejs with a restful API 【发布时间】:2014-03-27 09:11:41 【问题描述】:

我们最近决定在后端放弃 .NET 和 SQL,而是使用 mysql 或 postgreSQL 实现 nodejs 解决方案。我的服务器人员正在使用 sequelize 作为 orm 中间件来部署标准的 RESTful API。

有没有人有在这种情况下实施微风的经验?我知道我必须手动定义客户端元数据,但是一旦完成,我是否会失去使用 EFContextProvider 和服务器生成的元数据在典型 .NET 实现中提供的任何功能?另外,我可以使用标准的 RESTful API 调用,还是需要在服务器端进行额外配置?

【问题讨论】:

【参考方案1】:

看看我们的 MongoDB 示例。这是与 Node/MongoDB 后端对话的轻量级客户端。这并不完全是您正在寻找的东西,但它确实应该如何构建一个 Node 后端来与 Breeze 对话。如果您需要帮助或希望我们实施这样的后端,也可以随时联系微风@ideablade.com 咨询。

【讨论】:

【参考方案2】:

我认为这是一种令人兴奋的方法。

Breeze (还)没有为这种情况提供节点软件。您必须决定您喜欢ContextProvider 的哪些功能并将它们移植到节点。我不认为这一定非常困难,我们很乐意在力所能及的地方提供帮助。这将是对社区的巨大贡献。

您在“标准的 RESTful API”中寻找的内容将决定您的许多设计决策。是否要支持 OData 样式查询以便客户端代码可以编写查询?还是您会采取不同的方法?

您是否打算对每个资源进行单独的 PUT、POST、MERGE 和 DELETE 调用?或者您是否会有一些“更改集”的概念,用于在单个事务中组合多个保存操作?介于两者之间?

Breeze 喜欢开箱即用的变更集方法。 OTOH,如果您想“直接”使用 REST,那么有适合这种风格的 RESTy Breeze 数据服务适配器,而且还会有更多。

通过查看我们在 Node + Mongo 的 Zza sample 中引用的“breeze-mongodb”npm 模块中处理它们的方式,您可以了解很多关于 Node 中查询和更改集保存的机制。

【讨论】:

我对承担这项任务的开发人员的挑战是,我想要一种与我目前使用 .net 后端时相同的客户端编码体验,即不需要在客户端上定义元数据,完整odata 查询功能和保存时的更改集。事实上,我们已经决定我将继续使用 .net 对客户端进行编码,目标是我可以解开 Microsoft 并在客户端代码所需的零更改的情况下固定在节点上。我们的目的是为社区贡献我们的工作,因此您可以提供任何指导,我们将不胜感激! 你会很难取悦 :-)。我认为我不会坚持元数据要求。您可以手动编码和维护它(除非您的模型很大),将其放入 JS 文件中,然后让客户端从中读取。我今天在 .NET 中做这种事情(我在服务器启动时重新生成 JS 文件)。事实上,您可能希望将这个 .NET 生成的元数据文件作为礼物送给 Node 团队,这样他们就可以专注于重要的事情(这也是我开始 Mongo 示例的方式)。 刚刚使用 node-express-postgres 开始了一个有趣的项目。因为我已经在一个 .net 堆栈项目上使用过轻风,而且我非常喜欢它,我现在想在这个有趣的项目中再次使用它。事实上,这个 sequelize orm 工具也可以派上用场。有人知道使用上述堆栈的示例应用程序吗?【参考方案3】:

请注意,现在 Github 上有几个使用节点服务器/微风/[mysql|postgresql|etc...]的示例

文档解释-

http://breeze.github.io/doc-node-sequelize/

相关存储库 -

https://github.com/Breeze/breeze.server.node

【讨论】:

以上是关于使用 restful API 在 nodejs 上实现微风的主要内容,如果未能解决你的问题,请参考以下文章

在nodejs中使用rest auth api

保护 NodeJS RESTful API 和 React 客户端应用程序

使用 restful API 在 nodejs 上实现微风

nodejs使用Node.js实现REST Client调用REST API

NodeJS Rest API - 调用外部 API 的正确位置在哪里

如何使用 nodejs 和 express 在 REST API 中实现搜索和过滤