2015-09-10 22 views
7

我似乎无法弄清楚如何使用我的资源的集成请求中的映射模板创建可选的查询字符串参数。AWS API网关:如何在映射模板中将查询字符串参数设为可选?

我的模板看起来是这样的:

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

我想 '限价' & 'POST_DATE' 是可选的。该模板创建一个查询字符串,看起来像这样在不提供这些参数:

/myresource?limit=undefined& 

当我想到的问题:

/myresource 

Docs似乎并没有掩盖这一点。我在文档中找到了一些使用类bash语法来提供条件功能的示例模板。我试过以下测试,但它不会在AWS控制台中验证:

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

我在正确的轨道上吗?

谢谢!

+2

我想你应该定义所有可能的参数,然后在你的后台处理'undefined'。 – kixorz

+0

你是否在使用'Lambda'作为后端? – kixorz

+0

@napalm这就是我现在正在做的。真的AWS?这是跛脚。 Lambda - >是 – Nick

回答

3

是的,你绝对可以在Api Gateway中做到这一点;尽管它似乎没有很好的记录!

在你的问题中,你提到过这是一个参数;但是您使用了input.path,通常会引用POST请求正文中的一个元素。以下应该工作:

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

在文档方面,我发现从AWS的以下页面实际上是非常有用的。它藏在一个关于模拟终端部分,虽然:

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

相关问题