是否有完全实现的 REST javascript 客户端? [关闭]

Posted

技术标签:

【中文标题】是否有完全实现的 REST javascript 客户端? [关闭]【英文标题】:Is there a fully implemented REST javascript client? [closed] 【发布时间】:2012-05-24 06:56:15 【问题描述】:

我一直在试验和研究用于 RESTful Web 服务的 javascript 客户端。我所看到的几乎所有内容似乎都仅限于在客户端中重新创建模型定义以及对简单(非相关)模型进行 CRUD。

我在寻找什么

能够在给定服务器 API 提供的 JSONREST 架构的 URI 的情况下在客户端中动态创建模型(和/或代理和/或存储) 能够本地处理关系(即,无需创建一堆自定义函数或覆盖许多内置功能)。我说的是 1->n、1->1、n->1 和 n->m 关系。 能够很好地与 ExtJS 或 Dojo 等全功能客户端框架配合使用。

我的尝试

ExtJS 4.1:很棒的小部件集,能够完全编程布局,'ajax'/'rest' 代理可以开箱即用地用于简单模型。我找不到 IRC 或开发社区,GPL 论坛上的响应有限。 Dojo [当前]:需要自定义覆盖到 JsonRestStore 才能使用基本模型。很棒的小部件,很难完全避免使用 html。 我还查看了各种基于 jquery 的工具和一些关于backbone.js 的内容(http://backbonejs.org 目前已关闭。)。 jquery 的东西对我来说似乎完全脱节。如果有好的 jquery REST 工具,我愿意接受,我只需要指向有关如何使用它们开发连贯且可管理的应用程序的文档。

基本目标

开发可随时间推移维护且“干燥”的 Web 客户端应用程序。也就是说,在相关“类”中几乎没有复制粘贴 param1: 'asdf', param2: 30, ...。理想情况下,如果它是在服务器上定义的,那么客户端应该从 REST API 中获取它。如果它在客户端中定义,客户端的其他部分应该能够继承/扩展该定义。

另一种说法:

大多数 JS 框架都遵循 MVC 模式。对我来说,这很愚蠢,因为我的“M”和一些“C”已经在服务器上。我希望我的客户端成为“Vc”,只重新创建尽可能多的服务器端模型,以实现专注于 UI 呈现和用户操作的异步操作。这意味着理想情况下,“MVC”中的“M”都不会被硬编码到客户端中。

是否有一个功能齐全的 javascript REST 客户端可以指点我。谢谢。

【问题讨论】:

【参考方案1】:

你最想看的几个链接:

Backbonejs.org 的备用网址:http://documentcloud.github.com/backbone/

您可能知道,Backbone 会根据您的数据创建集合和模型等对象。

关系映射:https://github.com/PaulUithol/Backbone-relational/

如果您想在 Backbone 中进行关系数据映射,请点击上面的链接

JSON 模式验证器:https://github.com/garycourt/JSV

如果您担心确保遵守某个 JSON Schema,这很方便,您可以扩展 Backbone.js 以通过覆盖 validate 方法来验证模型客户端。

【讨论】:

谢谢,我已经查看了主干 github 存储库,但我真的希望查看他们的一些 tuts 和示例。我知道一些美味派的人推荐骨干,这很重要,因为我喜欢服务器上的美味派和 django。我现在会浏览你的其他链接。知道主干如何作为 UI 框架与 ExtJS 或 Dojo 集成吗? 教程和示例在他们的 github wiki 上,有点远离官方文档:github.com/documentcloud/backbone/wiki/… 啊……酷。骨干关系看起来很棒。 关于 JSONREST 模式,我是否只想在服务器上定义模型?在实践中,模式是否仅用于验证而不是模型推理? 与所有软件一样,这实际上取决于您的要求。根据特定模式客户端和服务器端验证您的数据最终将使您在用户体验方面受益,因为您不需要冗长的往返请求。没有什么能阻止您编写导出器来创建 json 模式的客户端版本。我在少数情况下使用 JSV,它有时真的很方便。【参考方案2】:

查看我的 Javascript JSON-Hyper-Schema 客户端。它通过使用 OPTIONS 方法解析在给定资源端点提供的架构,使用 Angular 动态构建 HTML 客户端应用程序。

https://github.com/bpanahij/passportedu_schema/tree/master/client

我一直在使用 JSON Hyper Schema 开发 HATEOAS(超媒体作为应用程序状态的引擎)API。 您可以转到下面的 URL,浏览、注册、登录并执行一些操作。

在这里查看: http://direct.psprt.com:8081/

到目前为止,我还开源了我的实际 API 代码: https://github.com/bpanahij/passportedu_schema

请随意查看、借阅和评论。

[JSON 超模式][1](另见 [JSON-Schema][2])

【讨论】:

链接坏了【参考方案3】:

试试https://github.com/avoidwork/abaaso,我听说过它的好消息。

【讨论】:

看起来有一天它可能会有潜力。现在,文档很少,没有关于关系的信息,也没有关于与 html DOM 以外的任何东西集成的信息。非常适合轻量级任务。在中等复杂的应用程序中看起来不像我需要的可维护性。不过,谢谢。 我认为你的误解是它是其他框架的插件,它被用来代替 ExtJS 或 Dojo。出于您的目的,您可能会专注于数据存储 github.com/avoidwork/abaaso/wiki/data,也许还有客户端方法。 好吧,我今晚看的更彻底了。我不得不说我真的很喜欢强调正确使用 REST。我在与 Ext 或 Dojo(甚至成熟后的 JQueryUI)集成方面提到它的原因是这是我的核心需求。如果您知道将 abaaso 用作具有集成 UI 工具包的数据层的示例,我很乐意看到。 如果您有任何问题,请在 twitter 上或通过 github 联系我。缺乏文件;它在我的“待办事项”清单上,以使其更加充实。您可以使用任何框架/库加载它并仅利用您需要的部分。我正在使用 filetrek.com 来做这件事,但这并不是真正面向公众的工作。我已经用它做了一些小证明,但我通常没有时间。它不成熟,但它几乎已经长大了。 感谢您的提议。我可能会接受你。【参考方案4】:

如果您不想要一个完整的框架,请尝试一下:https://github.com/jpillora/jquery.rest 这是相当新的,所以请发布问题、错误、功能请求!

【讨论】:

【参考方案5】:

我认为找到一个好的客户端库的问题在于我们(就像在网络社区中一样)还没有对 REST 以及如何构建一个 SERVER 库有一个完整和完整的理解。

HAL (http://stateless.co/hal_specification.html) 等技术可能会提供最佳的前进方向。当您拥有一组提交给 HATEOAS (http://en.wikipedia.org/wiki/HATEOAS) 的 API 并且真正以允许超链接驱动应用程序的方式工作时,您就有办法构建非常轻量级的前端,而无需重建每个对象,重新思考每个业务规则。

【讨论】:

【参考方案6】:

试试restful.js。富有表现力的语法允许资源嵌套,建立在 Promise 之上,并且不会妨碍您。它的灵感来自 Restangular,只是它是独立的。

免责声明:我们写的。

【讨论】:

以上是关于是否有完全实现的 REST javascript 客户端? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 有本地 REST 接口吗?

SOAP 还是 REST?具体项目

REST真的完全适合微服务架构吗?

我是否需要为SPA保护仅支持GET的REST API

REST 数据库连接是不是有标准?

MVC 或 Rest 或两者兼而有之