JavaScript REST istemci Kitaplığı [kapalı]


117

Beni (gibi tüm DİNLENME işlemi gerçekleştirmek için izin bir JavaScript kütüphanesi var mı GET, POST, PUTve DELETEüzerinde HTTPveya HTTPS)?

Yanıtlar:


139

Gerçekten belirli bir istemciye ihtiyacınız yok, çoğu kütüphanede oldukça basit. Örneğin jQuery'de $.ajax, yapmak istediğiniz istek türü ile genel işlevi çağırabilirsiniz :

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

/ / Veya her neyse PUTile değiştirebilirsiniz .GETPOSTDELETE


10
jQuery ayrıca GET ve POST'u kullanmak için bazı kullanışlı kısayol yöntemlerini içerir: api.jquery.com/category/ajax/shorthand-methods
Avi Flax

ve @Avi Flax'ın söylediklerini genişletmek için, kısayollar istiyorsanız kendi yöntemlerinizi PUTve DELETEyöntemlerinizi oluşturmak çok basit .
zzzzBov

2
Yanıtın gövdesini nasıl alırsınız? başlıklar?
Pantelis Sopasakis

@PantelisSopasakis successgeri arama data, yanıtı içerecek bir argüman alır .
soulseekah

6
Teknik olarak, bu bir REST istemcisi değil, bir HttpClient. Durumu yönlendirmek için bağlantı ilişkilerini ve medya türlerini doğru şekilde nasıl kullanacağımı gösteren bir şey arıyorum. Bakmaya devam edecek ...
Peter McEvoy

71

Mükemmel jQuery gibi bir kitaplık kullanmak isteyebilirsiniz ancak buna gerek yoktur: tüm modern tarayıcılar , ismine rağmen XML temsilleriyle sınırlı olmayan XMLHttpRequest API aracılığıyla JavaScript uygulamalarında HTTP'yi çok iyi destekler. .

Aşağıda, JavaScript'te eşzamanlı bir HTTP PUT isteği yapmaya bir örnek verilmiştir:

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 + ".");

Bu örnek eşzamanlıdır çünkü bu işi biraz kolaylaştırır, ancak bu API'yi kullanarak eşzamansız isteklerde bulunmak da oldukça kolaydır.

Web'de XmlHttpRequest'i öğrenmekle ilgili binlerce sayfa ve makale var - genellikle AJAX terimini kullanıyorlar - maalesef belirli bir tanesini öneremiyorum. Yine de bu referansı kullanışlı bulabilirsiniz .


11

Az önce yaptığım bu jQuery eklentisini kullanabilirsiniz :) https://github.com/jpillora/jquery.rest/

Temel CRUD işlemlerini, iç içe geçmiş kaynakları, temel yetkilendirmeyi destekler

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

Hatalar bulursanız veya yeni özellikler istiyorsanız, lütfen bunları havuzların 'Sorunlar' sayfasına gönderin.


2
Bunu ne kadar basit yaptığını seviyorum. İhtiyaç duyduğunuzda ek seçenekleri destekliyor gibi görünüyor, ancak bunları yoldan uzak tutuyorsunuz.
Stradas

Vay. Çok fazla açık kaynak paylaştınız. Saygı.
wonsuc

8

jQuery, URI parametre şablonlarının REST stiline sahip JSON-REST eklentisine sahiptir. Kullanımın açıklamasına göre followin: $.Read("/{b}/{a}", { a:'foo', b:'bar', c:3 })"/ bar / foo? C = 3" için GET olur.


6

Referans için, Manual: RESTful Web Services'da açıklandığı gibi ExtJS hakkında eklemek istiyorum . Kısaca, GET, POST, PUT, DELETE'i belirtmek için yöntemi kullanın. Misal:

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

Accept başlığı gerekliyse, tüm istekler için varsayılan olarak ayarlanabilir:

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

3

Verilerin bir javascript modelini sağlayacak Backbone.js gibi mvc çerçevelerini de kullanabilirsiniz. Modelde yapılan değişiklikler REST çağrılarına çevrilecektir.




Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.