2015-09-10 4 views
7

मुझे लगता है कि मेरे संसाधन के एकीकरण अनुरोध के भीतर मैपिंग टेम्पलेट का उपयोग करके वैकल्पिक क्वेरी स्ट्रिंग पैरामीटर कैसे बनाएं।एडब्ल्यूएस एपीआई गेटवे: मैपिंग टेम्पलेट में मैं क्वेरीस्ट्रिंग पैरामीटर को वैकल्पिक कैसे बना सकता हूं?

मेरे टेम्पलेट इस तरह दिखता है:

{ "limit": "$input.params('limit')", "post_date":"$input.params('post_date')" } 

मैं चाहते हैं, 'सीमा' & 'POST_DATE' वैकल्पिक किया जाना है।

/myresource?limit=undefined& 

जब मैं उम्मीद कर रहा हूँ:

/myresource 

Docs इस कवर करने के लिए नहीं है इस टेम्पलेट एक क्वेरी स्ट्रिंग है कि इस तरह दिखता है जब इन मानकों नहीं दिया जाता है बनाता है। मुझे प्रलेखन में कुछ उदाहरण टेम्पलेट्स मिले हैं जो सशर्त कार्यक्षमता प्रदान करने के लिए बैश-जैसी वाक्यविन्यास का उपयोग करते हैं। सही रास्ते पर

 #set($limit = $input.path('limit')) 
     { 
      #if($limit)"limit": "$input.params('limit')",#end 
     } 

एम आई: मैं परीक्षण निम्नलिखित को आज़मा चुके लेकिन यह एडब्ल्यूएस कंसोल में मान्य नहीं होगा?

धन्यवाद!

+2

मुझे लगता है कि आप सभी संभावित मापदंडों को परिभाषित करने और फिर अपने बैकएंड में undefined' संभाल 'चाहिए। – kixorz

+0

क्या आप बैकएंड के रूप में 'लैम्ब्डा' का उपयोग कर रहे हैं? – kixorz

+0

@napalm यही वह है जो मैं वर्तमान में कर रहा हूं। वास्तव में एडब्ल्यूएस ?! यही तो कमजोरी है। Lambda -> हाँ – Nick

उत्तर

3

हां, आप इसे एपी गेटवे में बिल्कुल कर सकते हैं; हालांकि यह अच्छी तरह से प्रलेखित प्रतीत नहीं होता है!

आपके प्रश्न में, आपने बताया कि यह एक पैरामीटर है; लेकिन आपने input.path का उपयोग किया, जो आमतौर पर POST अनुरोध के शरीर में एक तत्व का संदर्भ देगा। निम्नलिखित कार्य करना चाहिए:

#set($limit = $input.params('limit')) 
{ 
#if($limit && $limit.length() != 0) 
"limit": "$input.params('limit')" 
#end 
} 

दस्तावेज़ीकरण के संदर्भ में, मैंने पाया कि एडब्ल्यूएस से निम्नलिखित पृष्ठ वास्तव में बहुत उपयोगी है। यह, हालांकि नकली अंतिम बिंदुओं के बारे में एक वर्ग में रखा है:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-mock-integration.html

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