Biblioteca cliente JavaScript REST [fechada]


Respostas:


139

Você realmente não precisa de um cliente específico, é bastante simples com a maioria das bibliotecas. Por exemplo, em jQuery, você pode apenas chamar a $.ajaxfunção genérica com o tipo de solicitação que deseja fazer:

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

Você pode substituir PUTpor GET/ POST/ DELETEou qualquer outra coisa.


10
jQuery também inclui alguns métodos de atalho úteis para usar GET e POST: api.jquery.com/category/ajax/shorthand-methods
Avi Flax

e para expandir o que @Avi Flax disse, é muito simples criar seus próprios métodos PUTe DELETEse você quiser atalhos.
zzzzBov

2
Como você recupera o corpo da resposta? os cabeçalhos?
Pantelis Sopasakis

@PantelisSopasakis o successretorno de chamada recebe um dataargumento, que conterá a resposta.
soulseekah

6
Tecnicamente, este não é um cliente REST, é um HttpClient. Estou procurando algo que mostra como usar corretamente as relações de link e os tipos de mídia para conduzir o estado. Continuarei procurando ...
Peter McEvoy

71

Embora você possa desejar usar uma biblioteca, como a excelente jQuery , você não precisa: todos os navegadores modernos suportam muito bem HTTP em suas implementações de JavaScript por meio da API XMLHttpRequest , que, apesar do nome, não se limita a representações XML .

Aqui está um exemplo de como fazer uma solicitação HTTP PUT síncrona em 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 exemplo é síncrono porque torna um pouco mais fácil, mas também é muito fácil fazer solicitações assíncronas usando essa API.

Existem milhares de páginas e artigos na web sobre como aprender XmlHttpRequest - eles geralmente usam o termo AJAX - infelizmente, não posso recomendar um específico. No entanto, você pode achar esta referência útil.


11

Você pode usar este plugin jQuery que acabei de criar :) https://github.com/jpillora/jquery.rest/

Oferece suporte a operações CRUD básicas, recursos aninhados, autenticação 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 !' );
  });

Se você encontrar bugs ou quiser novos recursos, poste-os na página de 'Problemas' dos repositórios, por favor


2
Eu gosto de como você fez isso simples. Parece oferecer suporte a opções adicionais quando você precisa delas, mas você as mantém fora do caminho.
Stradas de

Uau. Você compartilhou tantas fontes abertas. Respeito.
wonsuc de

8

jQuery tem plugin JSON-REST com estilo REST de templates de parâmetro URI. De acordo com sua descrição, o exemplo de uso é o seguinte: $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })torna - se um GET para "/ bar / foo? C = 3".


6

Para referência, desejo acrescentar sobre ExtJS, conforme explicado no Manual: RESTful Web Services . Resumindo, use o método para especificar GET, POST, PUT, DELETE. Exemplo:

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

Se o cabeçalho Aceitar for necessário, ele pode ser definido como padrão para todas as solicitações:

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

3

Você também pode usar estruturas mvc como Backbone.js que fornecerá um modelo javascript dos dados. As mudanças no modelo serão traduzidas em chamadas REST.




Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.