2009-05-28 16 views

Respuesta

136

Realmente no necesita un cliente específico, es bastante simple con la mayoría de las bibliotecas. Por ejemplo, en jQuery que sólo puede llamar a la función genérica $.ajax 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 PUT con GET/POST/DELETE o lo que sea.

+10

jQuery también incluye algunos métodos útiles de acceso directo para usar GET y POST: http://api.jquery.com/category/ajax/shorthand-methods/ –

+0

y para ampliar lo que dijo @Avi Flax, es muy simple de crear sus propios métodos 'PUT' y' DELETE' si quiere atajos. – zzzzBov

+2

¿Cómo recuperas el cuerpo de la respuesta? los encabezados? –

67

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

He aquí un ejemplo de hacer una petición 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 eso hace que sea un poco más fácil, pero es muy fácil de hacer peticiones asíncronas utilizando esta API también.

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 this reference.

8

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

6

Como referencia quiero agregar sobre ExtJS, como se explica en el Manual: RESTful Web Services. 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 Accept es necesario, se puede configurar por defecto para todas las solicitudes:

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

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

9

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

soporta 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 quiere nuevas características, publicarlos en página de los repositorios 'problemas' por favor

+2

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

0

Usted puede utilizar http://adodson.com/hello.js/ que tiene

  1. soporte de la API Rest
  2. soporte incorporado para muchos sitios de Google, Facebook, Dropbox
  3. Es compatible con OAuth 1 y 2 de apoyo.
+1

Esto es demasiado – pylover

2

Puede probar restful.js, un cliente RESTful marco independiente, utilizando una sintaxis similar al popular Restangular.

Cuestiones relacionadas