2015-09-10 6 views
7

Non riesco a capire come creare parametri di stringa di query facoltativi utilizzando un modello di mappatura all'interno della richiesta di integrazione della mia risorsa.Gateway API AWS: come faccio a rendere facoltativi i parametri di querystring nel template di mappatura?

Il mio modello è simile al seguente:

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

mi piacerebbe 'limite' & 'POST_DATE' ad essere facoltativo. Questo modello crea una querystring che assomiglia a questo quando non vengono forniti i seguenti parametri:

/myresource?limit=undefined& 

Quando mi aspetto:

/myresource 

Il Docs non sembrano per coprire questo. Ho trovato alcuni modelli di esempio nella documentazione che usano una sintassi bash-like per fornire funzionalità condizionale. Ho provato a testare i seguenti, ma non sarà la convalida nella console AWS:

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

Sono sulla strada giusta?

Grazie!

+2

penso che si dovrebbe definire tutti i parametri possibili e quindi gestire 'undefined' nel backend. – kixorz

+0

Stai usando 'Lambda' come back-end? – kixorz

+0

@napalm Questo è quello che sto facendo ora. Davvero AWS ?! Che schifo. Lambda -> Sì – Nick

risposta

3

Sì, è assolutamente possibile farlo in Api Gateway; anche se non sembra essere ben documentato!

Nella tua domanda hai detto che questo è un parametro; ma hai usato input.path, che normalmente si riferisce a un elemento nel corpo della richiesta POST. Il seguente dovrebbe funzionare:

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

In termini di documentazione, ho trovato che la pagina seguente di AWS è in realtà piuttosto utile. E 'nascosto in una sezione su endpoint finto, però:

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