2013-10-22 7 views
21

मैं एक संसाधन इस तरह की स्थापना की है मान लीजिए:मैं कोणीय में अनुरोध निकाय के साथ यूआरएल टेम्पलेट पैरामीटर कैसे नहीं भेजूं?

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

वहाँ किसी भी तरह से मैं अनुरोध शरीर का हिस्सा के रूप में प्रस्तुत किया जा रहा से type और id को रोका जा सकता है, और सिर्फ PUT पेलोड में name भेजें? मैं जिस एपीआई को सबमिट कर रहा हूं उसे नियंत्रित नहीं करता हूं, और ऐसा लगता है कि मैं इसे भेज रहे अतिरिक्त पैरामीटर पसंद नहीं करता हूं।

धन्यवाद! पैरामीटर मान तो उस पैरामीटर का मान के साथ @ पहले से जुड़ा हुआ है

तो निकाला जाता है:

अद्यतन - - 10/25/13 13:38

resource के लिए दस्तावेज़ इस कहते हैं डेटा ऑब्जेक्ट से (गैर-जीईटी संचालन के लिए उपयोगी)।

कि इस डेटा से पैरामीटर निकालें चाहिए मतलब है कि:

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

लेकिन यह काम करने के लिए प्रतीत नहीं होता। अभी भी एक नुकसान पर।

+0

यह एक बड़ा समय अनुमान है; लेकिन $ HTTP का उपयोग करते समय; आप अनुरोध को संशोधित करने के लिए एक ट्रांसफॉर्म फ़ंक्शन जोड़ सकते हैं। क्या आप $ संसाधन के साथ एक ही काम कर सकते हैं? – JeffryHouser

+0

धन्यवाद - यह काम करता है! मेरे समाधान के लिए ऊपर देखें। हालांकि, दस्तावेज़ों का एक आसान तरीका है जो काम करना चाहिए, लेकिन नहीं। –

+0

आपको अपना समाधान औपचारिक उत्तर के रूप में पोस्ट करना चाहिए [AKA अपने स्वयं के प्रश्न का उत्तर दें]। यह उन लोगों की मदद करेगा जो भविष्य में पाते हैं। – JeffryHouser

उत्तर

7

Fwiw, मैं, एक समाधान खोजने के @ Reboog711 करने के लिए धन्यवाद किया है, तो जैसे एक transformRequest पैरामीटर शामिल करके:

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

उपयोग अपने URL टेम्प्लेट मापदंडों के लिए पहले पैरामीटर और दूसरा पैरामीटर में अपनी पोस्ट डेटा डाल इस तरह:

गैर प्राप्त "वर्ग" एसी:

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

यहाँ Angular docs कि समारोह हस्ताक्षर से पता चलता से लाइन है माहौल: Resource.action ([मापदंडों], POSTDATA, [सफलता], [त्रुटि])

यहाँ plunker

अनुरोध आप शरीर में url पैरामीटर नहीं है उसके में एक उदाहरण है:

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

यह सही जवाब है। – marapet

संबंधित मुद्दे