Libreria client REST JavaScript [chiusa]


Risposte:


139

Non hai davvero bisogno di un client specifico, è abbastanza semplice con la maggior parte delle librerie. Ad esempio in jQuery puoi semplicemente chiamare la $.ajaxfunzione generica con il tipo di richiesta che vuoi fare:

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

Puoi sostituire PUTcon GET/ POST/ DELETEo qualsiasi altra cosa.


10
jQuery include anche alcuni pratici metodi di scelta rapida per l'utilizzo di GET e POST: api.jquery.com/category/ajax/shorthand-methods
Avi Flax

e per espandere ciò che ha detto @Avi Flax, è molto semplice crearne uno tuo PUTe DELETEmetodi se vuoi scorciatoie.
zzzzBov

2
Come recuperi il corpo della risposta? le intestazioni?
Pantelis Sopasakis

@PantelisSopasakis il successcallback accetta un dataargomento, che conterrà la risposta.
soulseekah

6
Tecnicamente, questo non è un client REST, è un HttpClient. Sto cercando qualcosa che mostri come utilizzare correttamente le relazioni di collegamento e i tipi di media per guidare lo stato. Continuerò a cercare ...
Peter McEvoy

71

Anche se potresti voler utilizzare una libreria, come l'eccellente jQuery , non è necessario: tutti i browser moderni supportano molto bene HTTP nelle loro implementazioni JavaScript tramite l' API XMLHttpRequest , che, nonostante il suo nome, non è limitata alle rappresentazioni XML .

Ecco un esempio di creazione di una richiesta PUT HTTP sincrona in 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 + ".");

Questo esempio è sincrono perché lo rende un po 'più semplice, ma è abbastanza facile effettuare richieste asincrone anche utilizzando questa API.

Ci sono migliaia di pagine e articoli sul web sull'apprendimento di XmlHttpRequest - di solito usano il termine AJAX - sfortunatamente non posso consigliarne uno specifico. Tuttavia, potresti trovare utile questo riferimento .


11

Puoi usare questo plugin jQuery che ho appena creato :) https://github.com/jpillora/jquery.rest/

Supporta operazioni CRUD di base, risorse nidificate, autenticazione di base

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

Se trovi bug o desideri nuove funzionalità, pubblicali nella pagina "Problemi" dei repository


2
Mi piace come l'hai reso semplice. Sembra supportare opzioni aggiuntive quando ne hai bisogno, ma le tieni lontane.
Stradas

Wow. Hai condiviso così tante fonti aperte. Rispetto.
wonsuc

8

jQuery ha un plugin JSON-REST con lo stile REST dei modelli di parametri URI. Secondo la sua descrizione, l'esempio di utilizzo è il seguente: $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })diventa un GET to "/ bar / foo? C = 3".


6

Per riferimento voglio aggiungere su ExtJS, come spiegato nel Manuale: Servizi Web RESTful . In breve, usa il metodo per specificare GET, POST, PUT, DELETE. Esempio:

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

Se l'intestazione Accetta è necessaria, può essere impostata come predefinita per tutte le richieste:

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

3

Puoi anche utilizzare framework mvc come Backbone.js che forniranno un modello javascript dei dati. Le modifiche al modello verranno tradotte in chiamate REST.




Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.