Pustaka klien REST JavaScript [ditutup]

117

Apakah ada perpustakaan JavaScript yang memungkinkan saya untuk melakukan semua operasi SISA seperti ( GET, POST, PUTdan DELETElebih HTTPatau HTTPS)?

Amir Arad
sumber

Jawaban:

139

Anda tidak benar-benar membutuhkan klien tertentu, ini cukup sederhana dengan sebagian besar perpustakaan. Misalnya di jQuery Anda bisa memanggil $.ajaxfungsi generik dengan jenis permintaan yang ingin Anda buat:

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

Anda bisa mengganti PUTdengan GET/ POST/ DELETEatau apapun.

aleemb
sumber
10
jQuery juga menyertakan beberapa metode pintasan praktis untuk menggunakan GET dan POST: api.jquery.com/category/ajax/shorthand-methods
Avi Flax
dan untuk memperluas apa yang dikatakan @Avi Flax, sangat mudah untuk membuat sendiri PUTdan DELETEmetode Anda jika Anda menginginkan jalan pintas.
zzzzBov
2
Bagaimana Anda mendapatkan kembali respons? headernya?
Pantelis Sopasakis
@PantelisSopasakis successcallback mengambil dataargumen, yang akan berisi respons.
Soulseekah
6
Secara teknis, ini bukan klien REST, ini adalah HttpClient. Saya mencari sesuatu yang menunjukkan cara menggunakan hubungan tautan dan jenis media dengan benar untuk mendorong status. Akan terus mencari ...
Peter McEvoy
71

Meskipun Anda mungkin ingin menggunakan pustaka, seperti jQuery yang sangat baik , Anda tidak perlu: semua browser modern mendukung HTTP dengan sangat baik dalam implementasi JavaScript mereka melalui API XMLHttpRequest , yang, terlepas dari namanya, tidak terbatas pada representasi XML .

Berikut adalah contoh pembuatan permintaan HTTP PUT sinkron di 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 + ".");

Contoh ini sinkron karena membuatnya sedikit lebih mudah, tetapi cukup mudah untuk membuat permintaan asinkron menggunakan API ini juga.

Ada ribuan halaman dan artikel di web tentang belajar XmlHttpRequest - mereka biasanya menggunakan istilah AJAX - sayangnya saya tidak dapat merekomendasikan yang spesifik. Anda mungkin menemukan referensi ini berguna.

Avi Flax
sumber
11

Anda bisa menggunakan plugin jQuery yang baru saya buat :) https://github.com/jpillora/jquery.rest/

Mendukung operasi CRUD dasar, resource bersarang, autentikasi dasar

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

Jika Anda menemukan bug atau menginginkan fitur baru, silakan posting di halaman 'Masalah' repositori

jpillora.dll
sumber
2
Saya suka betapa sederhananya Anda membuatnya. Tampaknya mendukung opsi tambahan saat Anda membutuhkannya tetapi Anda menjauhkannya.
Stradas
Wow. Anda membagikan begitu banyak sumber terbuka. Menghormati.
wonsuc
8

jQuery memiliki plugin JSON-REST dengan gaya template parameter URI REST. Menurut penjelasannya, contoh penggunaan adalah sebagai berikut: $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })menjadi GET to "/ bar / foo? C = 3".

Volodymyr Frolov
sumber
6

Sebagai referensi saya ingin menambahkan tentang ExtJS, seperti yang dijelaskan di Manual: RESTful Web Services . Singkatnya, gunakan metode untuk menentukan GET, POST, PUT, DELETE. Contoh:

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

Jika header Terima diperlukan, ini dapat disetel sebagai default untuk semua permintaan:

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

Anda juga dapat menggunakan framework mvc seperti Backbone.js yang akan menyediakan model javascript dari data tersebut. Perubahan model akan diterjemahkan ke dalam panggilan REST.

Stig Husby
sumber
3

Anda dapat mencoba restful.js , klien RESTful framework-agnostic, menggunakan sintaks yang mirip dengan Restangular yang populer.

François Zaninotto
sumber
0

Anda dapat menggunakan http://adodson.com/hello.js/ yang memiliki

  1. Dukungan Rest API
  2. Dibangun di dukungan untuk banyak situs google, facebook, dropbox
  3. Ini mendukung dukungan oAuth 1 dan 2.
Alireza Fattahi
sumber