2013-10-22 36 views
21

Ben bu kadarını bir kaynak olduğunu varsayalım:Url şablon parametrelerini istek gövdesi ile açısal olarak nasıl gönderemiyorum?

resource = $resource(
    "http://foo.com/service/:type/:id", 
    {}, 
    {save: {method:'PUT', params: {type:'@type', id: '@id'}}} 
); 
resource.save({type:'user', id:14, name:'Bob Dole'}); 

Ben istek gövdesinin bir parçası olarak sunulan olmaktan type ve id önleyebilir herhangi bir yolu var mı ve sadece PUT yükü içinde name göndermek? Gönderdiğim API'yi kontrol etmiyorum ve gönderdiğim ekstra parametreleri beğenmedim.

Teşekkürler! Parametre değeri bu parametrenin değerinin @ öneki

ise ekstre edilir:

Güncelleme - - 10/25/13 13:38

resource belgelerine bu söyler veri nesnesinden (GET dışı işlemler için yararlı).

resource.save({type:'@user', id:'@14', name:'Bob Dole'}); 

ama işe görünmüyor: Bu verilerden parametrelerini kaldırmak gerektiğini ima

. Hala kayıpta.

+0

Bu büyük zaman tahminidir; ama $ HTTP kullanırken; İsteği değiştirmek için bir dönüşüm işlevi ekleyebilirsiniz. Aynı şeyi $ kaynak ile yapabilir misin? – JeffryHouser

+0

Teşekkürler - bu işe yarıyor! Çözümüm için yukarı bakın. Bununla birlikte, dokümanlar çalışması gereken daha kolay bir yoldan bahsetmektedir, ancak yapmamaktadır. –

+0

Çözümünüzü resmi bir yanıt olarak göndermelisiniz [AKA Kendi sorunuzu cevaplayın]. Gelecekte bulan insanlara yardımcı olacaktır. – JeffryHouser

cevap

7

FWIW, ben şöyle bir transformRequest parametresini ekleyerek, @ Reboog711 sayesinde geçici bir çözüm buldunuz:

resource = $resource(
    "http://foo.com/service/:type/:id", 
    {}, 
    {save: { 
     method:'PUT', 
     transformRequest:function(data) { 
      delete data.type; 
      delete data.id; 
      return JSON.stringify(data); 
     }, 
     params: {type:'@type', id: '@id'} 
    }} 
); 
32

kullanın Url'nizde şablon parametreleri için birinci parametre ve ikinci parametre olan posta verilerini koymak böyle:

olmayan GET "sınıfı" ac: Burada

resource.save({id:14, type:'user'}, {name:'Bob Dole'}); 

fonksiyon imzasını gösterir Angular docs gelen çizgi ları: Resource.action ([parametreler], postData, [başarı], [Hata]) İşte plunker

Eğer vücutta url parametreler yok olsun isteği içinde bir örnek

:

Request URL:http://run.plnkr.co/JAOqZqW6RSywatUM/badUrl/user/14 
Request Method:PUT 
Request Payloadview source 
{name:Bob Dole} 
+4

Doğru cevap budur. – marapet

İlgili konular