Может ли шаблон отображения для шлюза API иметь значения Dynami c и жестко закодированные - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь отобразить запрос шлюза API на лямбду. Шаблон сопоставления, который я использую:

{
  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": {
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "queryParams": {
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "pathParams": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end

    #end
  },
  "source_ip" : "$context.identity.sourceIp"
}

Проблема в том, что я также хотел бы также жестко закодировать параметр строки запроса, который пользователь не должен передавать (для удобства пользователя), но моя лямбда ожидает. Я хотел бы сделать что-то подобное его событие {"queryParams": "foo"}}. Но я хочу, чтобы и другие параметры запроса были отправлены. Есть ли способ добавить в жестко запрограммированный параметр запроса и not переопределить все динамически сопоставленные параметры?

Спасибо!

1 Ответ

1 голос
/ 23 апреля 2020

А как насчет этого:

{
  "method": "$context.httpMethod",
  "body" : $input.json('$'),
  "headers": {
    #foreach($param in $input.params().header.keySet())
    "$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end
    #end
  },
  "queryParams": {
    #foreach($param in $input.params().querystring.keySet())
    "$param": "$util.escapeJavaScript($input.params().querystring.get($param))",
    #end
    "myrequiredkey":"foo"
  },
  "pathParams": {
    #foreach($param in $input.params().path.keySet())
    "$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
    #end
  },
  "source_ip" : "$context.identity.sourceIp"
}

Я удалил #if($foreach.hasNext),#end и прямо добавил требуемый параметр в ваш объект.

...