Biblioteca de cliente REST de JavaScript [cerrado]


117

¿Hay una biblioteca JavaScript que me permiten realizar todas las operaciones REST como ( GET, POST, PUTy DELETEmás HTTPo HTTPS)?

Respuestas:


139

Realmente no necesita un cliente específico, es bastante simple con la mayoría de las bibliotecas. Por ejemplo, en jQuery puede simplemente llamar a la $.ajaxfunción genérica con el tipo de solicitud que desea realizar:

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

Puede reemplazar PUTcon GET/ POST/ DELETEo lo que sea.


10
jQuery también incluye algunos métodos prácticos de atajo para usar GET y POST: api.jquery.com/category/ajax/shorthand-methods
Avi Flax

y para ampliar lo que dijo @Avi Flax, es muy sencillo crear sus propios métodos PUTy DELETEsi desea accesos directos.
zzzzBov

2
¿Cómo recupera el cuerpo de la respuesta? los encabezados?
Pantelis Sopasakis

@PantelisSopasakis la successdevolución de llamada toma un dataargumento, que contendrá la respuesta.
soulseekah

6
Técnicamente, este no es un cliente REST, es un HttpClient. Estoy buscando algo que muestre cómo usar correctamente las relaciones de enlace y los tipos de medios para impulsar el estado. Seguirá buscando ...
Peter McEvoy

71

Si bien es posible que desee utilizar una biblioteca, como el excelente jQuery , no es necesario: todos los navegadores modernos admiten HTTP muy bien en sus implementaciones de JavaScript a través de la API XMLHttpRequest , que, a pesar de su nombre, no se limita a representaciones XML .

A continuación, se muestra un ejemplo de cómo realizar una solicitud HTTP PUT sincrónica en 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 + ".");

Este ejemplo es sincrónico porque lo hace un poco más fácil, pero también es bastante fácil realizar solicitudes asincrónicas utilizando esta API.

Hay miles de páginas y artículos en la web sobre el aprendizaje de XmlHttpRequest; generalmente usan el término AJAX; desafortunadamente, no puedo recomendar uno específico. Sin embargo, puede encontrar útil esta referencia .


11

Puede usar este complemento de jQuery que acabo de hacer :) https://github.com/jpillora/jquery.rest/

Admite operaciones CRUD básicas, recursos anidados, autenticación básica

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

Si encuentra errores o desea nuevas funciones, publíquelas en la página 'Problemas' de los repositorios.


2
Me gusta lo simple que lo ha hecho. Parece que admite opciones adicionales cuando las necesita, pero las mantiene fuera del camino.
Stradas

Guau. Compartiste tantas fuentes abiertas. El respeto.
wonsuc

8

jQuery tiene un complemento JSON-REST con estilo REST de plantillas de parámetros URI. Según su descripción, el ejemplo de uso es el siguiente: se $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })convierte en GET en "/ bar / foo? C = 3".


6

Como referencia, quiero agregar sobre ExtJS, como se explica en Manual: Servicios web RESTful . En resumen, use el método para especificar GET, POST, PUT, DELETE. Ejemplo:

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

Si el encabezado Aceptar es necesario, se puede establecer como predeterminado para todas las solicitudes:

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

3

También puede usar marcos de mvc como Backbone.js que proporcionarán un modelo javascript de los datos. Los cambios en el modelo se traducirán en llamadas REST.




Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.