【问题标题】:JavaScript REST client Library [closed]JavaScript REST客户端库[关闭]
【发布时间】:2009-05-28 16:45:57
【问题描述】:

是否有一个 JavaScript 库可以让我执行所有 REST 操作,例如(GETPOSTPUTDELETE over HTTPHTTPS)?

【问题讨论】:

    标签: javascript jquery rest


    【解决方案1】:

    您实际上并不需要特定的客户端,大多数库都相当简单。例如,在 jQuery 中,您可以使用您想要发出的请求类型调用通用 $.ajax 函数:

    $.ajax({
        url: 'http://example.com/',
        type: 'PUT',
        data: 'ID=1&Name=John&Age=10', // or $('#myform').serializeArray()
        success: function() { alert('PUT completed'); }
    });
    

    您可以将PUT 替换为GET/POST/DELETE 或其他任何内容。

    【讨论】:

    • jQuery 还包括一些使用 GET 和 POST 的便捷快捷方法:api.jquery.com/category/ajax/shorthand-methods
    • 并扩展 @Avi Flax 所说的内容,如果您需要快捷方式,创建自己的 PUTDELETE 方法非常简单。
    • 如何检索响应的正文?标题?
    • @PantelisSopasakis success 回调采用 data 参数,该参数将包含响应。
    • 从技术上讲,这不是一个 REST 客户端,而是一个 HttpClient。我正在寻找展示如何正确使用链接关系和媒体类型来驱动状态的东西。将继续寻找......
    【解决方案2】:

    虽然您可能希望使用库,例如​​出色的 jQuery,但您不必这样做:所有现代浏览器都通过 XMLHttpRequest API 在其 JavaScript 实现中很好地支持 HTTP,尽管它的名字,不限于 XML 表示。

    以下是在 JavaScript 中发出同步 HTTP PUT 请求的示例:

    var url = "http://host/path/to/resource";
    var representationOfDesiredState = "The cheese is old and moldy, where is the bathroom?";
    
    var client = new XMLHttpRequest();
    
    client.open("PUT", url, false);
    
    client.setRequestHeader("Content-Type", "text/plain");
    
    client.send(representationOfDesiredState);
    
    if (client.status == 200)
        alert("The request succeeded!\n\nThe response representation was:\n\n" + client.responseText)
    else
        alert("The request did not succeed!\n\nThe response status was: " + client.status + " " + client.statusText + ".");
    

    这个例子是同步的,因为这使它更容易一些,但使用这个 API 也很容易发出异步请求。

    网络上有数以千计的关于学习 XmlHttpRequest 的页面和文章——他们通常使用术语 AJAX——不幸的是我不能推荐一个具体的。不过,您可能会发现 this reference 很方便。

    【讨论】:

      【解决方案3】:

      你可以使用我刚刚制作的这个 jQuery 插件 :) https://github.com/jpillora/jquery.rest/

      支持基本的 CRUD 操作、嵌套资源、基本身份验证

        var client = new $.RestClient('/api/rest/');
      
        client.add('foo');
        client.foo.add('baz');
        client.add('bar');
      
        client.foo.create({a:21,b:42});
        // POST /api/rest/foo/ (with data a=21 and b=42)
        client.foo.read();
        // GET /api/rest/foo/
        client.foo.read("42");
        // GET /api/rest/foo/42/
        client.foo.update("42");
        // PUT /api/rest/foo/42/
        client.foo.delete("42");
        // DELETE /api/rest/foo/42/
      
        //RESULTS USE '$.Deferred'
        client.foo.read().success(function(foos) {
          alert('Hooray ! I have ' + foos.length + 'foos !' );
        });
      

      如果您发现错误或想要新功能,请将它们发布在存储库的“问题”页面中

      【讨论】:

      • 我喜欢你做的多么简单。当您需要它们时,它似乎支持其他选项,但您不会妨碍它们。
      • 哇。你分享了这么多开源。尊重。
      【解决方案4】:

      jQuery 有 JSON-REST 插件,带有 REST 风格的 URI 参数模板。根据其描述的使用示例如下:$.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 }) 变为“/bar/foo?c=3”的 GET。

      【讨论】:

        【解决方案5】:

        作为参考,我想添加有关 ExtJS 的信息,如手册中所述:RESTful Web Services。简而言之,使用方法来指定 GET、POST、PUT、DELETE。示例:

        Ext.Ajax.request({
            url: '/articles/restful-web-services',
            method: 'PUT',
            params: {
                author: 'Patrick Donelan',
                subject: 'RESTful Web Services are easy with Ext!'
            }
        });
        

        如果需要 Accept 头,可以将其设置为所有请求的默认值:

        Ext.Ajax.defaultHeaders = {
            'Accept': 'application/json'
        };
        

        【讨论】:

          【解决方案6】:

          您还可以使用诸如 Backbone.js 之类的 mvc 框架来提供数据的 javascript 模型。对模型的更改将转换为 REST 调用。

          【讨论】:

            【解决方案7】:

            您可以尝试restful.js,一个与框架无关的 RESTful 客户端,使用类似于流行的 Restangular 的语法。

            【讨论】:

              【解决方案8】:

              Dojo 可以,例如通过 JsonRestStore,请参阅http://www.sitepen.com/blog/2008/06/13/restful-json-dojo-data/

              【讨论】:

                【解决方案9】:

                你可以使用http://adodson.com/hello.js/

                1. Rest API 支持
                2. 内置支持许多网站 google、facebook、dropbox
                3. 它支持 oAuth 1 和 2 支持。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-06-25
                  • 1970-01-01
                  • 2013-07-07
                  • 2011-09-27
                  • 2012-01-13
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多