有没有一个完全实现的REST JavaScript客户端?

6
我一直在尝试和研究用于RESTful web服务的javascript客户端。我发现几乎所有我看到的都只限于在客户端中重新创建模型定义并对简单(非相关)模型进行CRUD。
我正在寻找:
1. 能够根据服务器API提供的JSONREST模式的URI在客户端动态创建模型(和/或代理和/或存储)的能力。 2. 能够本地处理关系(即,不需要创建大量自定义函数或覆盖多个内置功能)。我指的是1->n、1->1、n->1和n->m关系。 3. 能够与完整的客户端框架(如ExtJS或Dojo)相对良好地配合使用的能力。
我尝试过:
1. ExtJS 4.1:出色的小部件集,能够进行完全编程布局,“ajax” / “rest”代理可用于简单模型。没有IRC或开发社区,GPL论坛的响应性有限。 2. Dojo [current]:需要自定义覆盖JsonRestStore才能与基本模型一起使用。出色的小部件,难以完全避免html。 3. 我还看过各种基于jquery的工具和一些backbone.js(http://backbonejs.org目前已关闭)。对我来说,jquery的东西似乎完全不连贯。如果有好的jquery REST工具,我会接受它们,我只需要指向如何使用它们开发一致和可管理的应用程序的文档。
基本目标:
开发能够随着时间推移而可维护并且“DRY”的Web客户端应用程序。也就是说,在相关的“类”中尽可能少地复制{param1:'asdf',param2:30,...}。理想情况下,如果在服务器上定义了它,客户端应该从REST API获取它。如果在客户端中定义了它,则客户端的其他部分应该能够继承/扩展该定义。
另一种表达方式:
大多数JS框架都遵循MVC模式。对我来说,这很傻,因为我的“M”已经在服务器上了,还有一些“C”。我希望我的客户端成为“Vc”,仅重新创建必要的服务器端模型以进行异步操作,重点放在UI呈现和用户操作上。这意味着理想情况下,“MVC”中的“M”都不会硬编码到客户端中。
是否有全功能的javascript REST客户端可以指引我。谢谢。
6个回答

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

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

我一直在开发一个使用JSON Hyper Schema的HATEOAS(超媒体作为应用程序状态引擎)API。您可以访问下面的网址,浏览、注册、登录并执行一些操作。
请查看此链接: http://direct.psprt.com:8081/ 我还公开了我目前的API代码: https://github.com/bpanahij/passportedu_schema 请随意查看、借鉴和评论。
[JSON Hyper Schema][1](另见 [JSON-Schema][2])
[1]: https://json-schema.org/latest/json-hyper-schema.html [2]: https://json-schema.org/

链接已经失效。 - Emil

2

以下是您可能想查看的一些链接:

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

您可能知道,Backbone会根据您的数据创建诸如Collection和Model之类的对象。

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

如果您想在Backbone中进行关系数据映射,请使用上述链接。

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

如果您担心是否符合特定的JSON模式,则可以通过覆盖validate方法来扩展Backbone.js以在客户端验证模型。


谢谢,我已经查看了backbone的github存储库,但我真的希望能够查看一些他们的教程和示例。我知道一些tastypie的人推荐backbone,这很重要,因为我喜欢在服务器上使用tastypie和django。我现在会浏览您提供的其他链接。您有没有想过如何将backbone与ExtJS或Dojo作为UI框架集成? - justinzane
1
教程和示例在它们的 Github Wiki 上,有点藏在官方文档之外:https://github.com/documentcloud/backbone/wiki/Tutorials%2C-blog-posts-and-example-sites - Vincent Briglia
啊...太酷了。backbone-relational看起来非常棒。 - justinzane
1
关于JSON REST模式,我是否有点疯狂,只想在服务器上定义模型?实际上,这些模式是否只用于验证而非模型推断? - justinzane
与所有软件一样,它真正取决于您的需求。在客户端和服务器端针对特定模式验证数据最终将使用户体验更好,因为您不需要进行漫长的往返请求。您可以编写导出器来创建您的JSON模式的客户端版本。我在某些情况下使用JSV,它确实非常方便。 - Vincent Briglia

1

看起来将来可能有潜力。目前,文档很少,没有关系信息,也没有与除HTML DOM之外的任何其他集成的信息。非常适合轻量级任务。但不适合我在一个相对复杂的应用程序中需要的可维护性。谢谢。 - justinzane
1
我认为你的误解在于它是其他框架的插件,实际上它是用来替代ExtJS或Dojo的。对于你的目的,你可能会关注数据存储https://github.com/avoidwork/abaaso/wiki/data,以及客户端方法。 - jmulligan
今晚我仔细地看了一下它。我必须说,我真的很喜欢强调正确使用REST的重点。我提到与Ext或Dojo(甚至是JQueryUI成熟后)集成的原因是这是我的核心要求。如果您知道abaaso作为数据层与集成UI工具包的示例,我很想看看。 - justinzane
如果您有任何问题,请通过Twitter或Github与我联系。文档内容还不够充分,但它在我的“待办事项”列表中,我会完善它更多。您可以使用任何框架/库来加载它,并仅利用您所需的部分。我正在使用它来开发filetrek.com,但这并不是真正公开的工作。我已经进行了一些小型的证明,但通常时间不足。它还不太成熟,但已经接近成年。 - jmulligan
谢谢你的提议。我可能会考虑接受它。 - justinzane
我忘了提到,这取决于你使用的数据是n-n还是n-1。 - jmulligan

0

0
尝试使用 restful.js。这种具有表现力的语法允许资源嵌套,基于 promises 构建,并且不会妨碍你的工作。它受 Restangular 的启发,但是它是独立的。

声明:我们编写了它。


0

我认为找到一个好的客户端库的问题在于我们(即网络社区)尚未完全理解REST以及如何构建服务器库。

像HAL(http://stateless.co/hal_specification.html)这样的技术可能提供了最好的前进方向。当您拥有一组承诺使用HATEOAS(http://en.wikipedia.org/wiki/HATEOAS)并真正以允许超链接驱动应用程序的方式工作的API时,您就有了一种构建非常轻量级前端的方法,这些前端不需要重建每个对象并重新思考每个业务规则。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接