Thư viện ứng dụng JavaScript REST [đã đóng]


117

Có một thư viện JavaScript cho phép tôi thực hiện tất cả các hoạt động REST của loại tương tự ( GET, POST, PUTDELETEqua HTTPhay HTTPS)?

Câu trả lời:


139

Bạn không thực sự cần một ứng dụng khách cụ thể, nó khá đơn giản với hầu hết các thư viện. Ví dụ: trong jQuery, bạn chỉ có thể gọi $.ajaxhàm chung với loại yêu cầu bạn muốn thực hiện:

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

Bạn có thể thay thế PUTbằng GET/ POST/ DELETEhoặc bất cứ điều gì.


10
jQuery cũng bao gồm một số các phương pháp tắt tiện dụng cho việc sử dụng GET và POST: api.jquery.com/category/ajax/shorthand-methods
Avi lanh

và để mở rộng những gì @Avi Flax đã nói, rất đơn giản để tạo các phương pháp PUTDELETEphương thức của riêng bạn nếu bạn muốn các phím tắt.
zzzzBov

2
Làm thế nào để bạn truy xuất nội dung của phản hồi? các tiêu đề?
Pantelis Sopasakis

@PantelisSopasak là lệnh successgọi lại nhận một datađối số, sẽ chứa phản hồi.
soulseekah

6
Về mặt kỹ thuật, đây không phải là một ứng dụng khách REST, mà là một HttpClient. Tôi đang tìm kiếm thứ chỉ ra cách sử dụng hợp lý các quan hệ liên kết và các loại phương tiện để thúc đẩy trạng thái. Sẽ tiếp tục tìm kiếm ...
Peter McEvoy

71

Mặc dù bạn có thể muốn sử dụng một thư viện, chẳng hạn như jQuery tuyệt vời , nhưng bạn không cần phải làm như vậy: tất cả các trình duyệt hiện đại đều hỗ trợ HTTP rất tốt trong việc triển khai JavaScript của chúng thông qua API XMLHttpRequest , mặc dù có tên gọi, nhưng không giới hạn ở các biểu diễn XML .

Dưới đây là một ví dụ về việc thực hiện một yêu cầu HTTP PUT đồng bộ trong JavaScript:

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 + ".");

Ví dụ này là đồng bộ vì điều đó làm cho nó dễ dàng hơn một chút, nhưng cũng khá dễ dàng để thực hiện các yêu cầu không đồng bộ bằng cách sử dụng API này.

Có hàng nghìn trang và bài báo trên web về việc học XmlHttpRequest - họ thường sử dụng thuật ngữ AJAX - tiếc là tôi không thể đề xuất một cái cụ thể. Bạn có thể thấy tài liệu tham khảo này hữu ích.


11

Bạn có thể sử dụng plugin jQuery này mà tôi vừa tạo :) https://github.com/jpillora/jquery.rest/

Hỗ trợ các hoạt động CRUD cơ bản, tài nguyên lồng nhau, xác thực cơ bản

  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 !' );
  });

Nếu bạn tìm thấy lỗi hoặc muốn có các tính năng mới, vui lòng đăng chúng trên trang 'Sự cố' của kho lưu trữ


2
Tôi thích cách bạn làm nó đơn giản. Nó dường như hỗ trợ các tùy chọn bổ sung khi bạn cần nhưng bạn vẫn giữ chúng ở bên ngoài.
Stradas

Chà. Bạn đã chia sẻ rất nhiều nguồn mở. Sự tôn trọng.
wonsuc,

8

jQuery có plugin JSON-REST với kiểu REST của các mẫu tham số URI. Theo ví dụ mô tả của nó về việc sử dụng là followin: $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })trở thành GET thành "/ bar / foo? C = 3".


6

Để tham khảo, tôi muốn thêm về ExtJS, như được giải thích trong Hướng dẫn sử dụng: Dịch vụ Web RESTful . Tóm lại, sử dụng phương thức để chỉ định GET, POST, PUT, DELETE. Thí dụ:

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

Nếu tiêu đề Chấp nhận là cần thiết, nó có thể được đặt làm mặc định cho tất cả các yêu cầu:

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

3

Bạn cũng có thể sử dụng các khung công tác mvc như Backbone.js sẽ cung cấp mô hình javascript của dữ liệu. Các thay đổi đối với mô hình sẽ được chuyển thành các cuộc gọi REST.


3

Bạn có thể thử restful.js , một ứng dụng khách RESTful của khuôn khổ bất khả tri, sử dụng cú pháp tương tự như Restangular phổ biến.



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.