Pustaka klien REST JavaScript [ditutup]


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.


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.


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


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".


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

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.




Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.