Клиентская библиотека JavaScript REST [закрыто]

117

Есть библиотека JavaScript , которая позволяет мне выполнять все операции , как REST ( GET, POST, PUTи DELETEболее HTTPили HTTPS)?

Амир Арад
источник

Ответы:

139

На самом деле вам не нужен конкретный клиент, это довольно просто с большинством библиотек. Например, в jQuery вы можете просто вызвать общую $.ajaxфункцию с типом запроса, который вы хотите сделать:

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

Вы можете заменить PUTна GET/ POST/ DELETEили что угодно.

aleemb
источник
10
jQuery также включает несколько удобных методов быстрого доступа для использования GET и POST: api.jquery.com/category/ajax/shorthand-methods
Avi Flax
и расширить на то , что сказал @Avi льняной, это очень просто создавать свои собственные PUTи DELETEметоды , если вы хотите ярлыки.
zzzzBov 08
2
Как получить текст ответа? заголовки?
Пантелис Сопасакис,
@PantelisSopasakis successобратный вызов принимает dataаргумент, который будет содержать ответ.
soulseekah
6
Технически это не REST-клиент, это HttpClient. Я ищу что-то, что показывает, как правильно использовать отношения ссылок и типы мультимедиа для управления состоянием. Будем продолжать искать ...
Питер МакЭвой
71

Хотя вы можете захотеть использовать библиотеку, такую ​​как превосходный jQuery , вам не обязательно: все современные браузеры очень хорошо поддерживают HTTP в своих реализациях JavaScript через API XMLHttpRequest , который, несмотря на свое название, не ограничивается представлениями XML. ,

Вот пример выполнения синхронного HTTP-запроса PUT в 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 + ".");

Этот пример является синхронным, потому что это немного упрощает его, но также довольно легко выполнять асинхронные запросы с использованием этого API.

В Интернете есть тысячи страниц и статей об изучении XmlHttpRequest - они обычно используют термин AJAX - к сожалению, я не могу порекомендовать конкретный. Однако вы можете найти эту ссылку удобной.

Ави Лен
источник
11

Вы можете использовать только что сделанный мной плагин jQuery :) https://github.com/jpillora/jquery.rest/

Поддерживает базовые операции CRUD, вложенные ресурсы, базовую аутентификацию

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

Если вы обнаружите ошибки или вам нужны новые функции, разместите их на странице «Проблемы» в репозиториях.

jpillora
источник
2
Мне нравится, насколько просто вы это сделали. Кажется, он поддерживает дополнительные параметры, когда они вам нужны, но вы держите их подальше.
Stradas
Вот это да. Вы поделились множеством открытых источников. Респект.
wonsuc
8

jQuery имеет плагин JSON-REST со стилем REST шаблонов параметров URI. Согласно его описанию, пример использования выглядит следующим образом: $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })становится GET на "/ bar / foo? C = 3".

Владимир Фролов
источник
6

Для справки я хочу добавить о ExtJS, как описано в Руководстве: RESTful Web Services . Короче говоря, используйте метод, чтобы указать GET, POST, PUT, DELETE. Пример:

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

Если заголовок Accept необходим, его можно установить по умолчанию для всех запросов:

Ext.Ajax.defaultHeaders = {
    'Accept': 'application/json'
};
stivlo
источник
3

Вы также можете использовать фреймворки mvc, такие как Backbone.js, которые предоставят модель данных javascript. Изменения модели будут переведены в вызовы REST.

Стиг Хасби
источник
3

Вы можете попробовать restful.js , клиент RESTful, не зависящий от инфраструктуры, используя синтаксис, аналогичный популярному Restangular.

Франсуа Занинотто
источник
0

Вы можете использовать http://adodson.com/hello.js/, в котором есть

  1. Поддержка Rest API
  2. Встроенная поддержка многих сайтов google, facebook, dropbox
  3. Он поддерживает поддержку oAuth 1 и 2.
Алиреза Фаттахи
источник