如何将URL部分映射到AWS API网关中的参数?

问题描述 投票:0回答:3

是否可以根据AWS API网关中的以下伪代码模板映射URL参数?

/mysite/data/results/{id}/image/{filename}

我在网络表单上没有看到适当的字段:

URL 查询字符串参数可能用于

?

之后的内容

它也不在资源部分自由接受花括号:

amazon-web-services aws-api-gateway
3个回答
2
投票

在API网关中。添加资源时,需要在定义资源和映射url时指定路径变量(Path参数)。

如您所见,它还支持Path变量和Proxy变量。


0
投票

您可以应用以下步骤:

  • 每个路由,即 /mysite、/data、/results/、/image/ 创建专用资源
  • 然后,导航(点击)到结果资源,并在操作中创建名为
  • 的新资源
    • 将资源名称* 设置为 id,并将资源路径* 设置为 {id}
    • 然后你会看到刚刚创建的 {id} 资源。为此,请创建必要的方法(“GET”、“POST”、“ANY”...)。然后,打开方法属性(刚刚由您创建)并转到“集成请求”。在底部找到名为“映射模板”的选项。
    • 创建新的映射模板(可以是“application/json”),然后将以下代码片段粘贴到此处:

        {
          "body" : $input.json('$'),
          "headers": {
            #foreach($header in $input.params().header.keySet())
            "$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end
        
            #end
          },
          "method": "$context.httpMethod",
          "params": {
            #foreach($param in $input.params().path.keySet())
            "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
        
            #end
          },
          "query": {
            #foreach($queryParam in $input.params().querystring.keySet())
            "$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end
        
            #end
          }  
        }
    
  • 对其他资源和方法应用相同的过程

之后,您将能够调用 API:

/mysite/data/results/{id}/image/{filename} --> /mysite/data/results/10/image/aws_support.jpg

要解析 lambda 函数中的 URL 参数,您可以轻松应用以下内容:

    def lambda_handler(event, context):
        path_parameters = event['params'] # all the passed parameters within URL will be stored under event "params" key

event['params']
格式如下:

    {
    "id" = "10",
    "filename" = "aws_support.jpg"
    }

0
投票

您可以使用两个资源块来解决这个问题。一名是父母,另一名是孩子。但这可能不适用于 URL。 内存资源: 类型:AWS::ApiGateway::资源 特性: RestApiId:!Ref MyApiGateway ParentId:!Ref MyResource.RootResourceId 路径部分:“内存中”

编码资源: 类型:AWS::ApiGateway::资源 特性: RestApiId:!Ref MyApiGateway ParentId: !GetAtt InMemoryResource.ResourceId 路径部分:“编码”

© www.soinside.com 2019 - 2024. All rights reserved.