Простое сопоставление заголовков
Документация AWS о Ответ > Отображения заголовков > Значение отображения на странице https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings-execution-console.html
В качестве значения сопоставления используйте один из следующих форматов:
integra.response.header. header-name , где header-name - это имяоднозначный заголовок ответа от бэкэнда.Например, чтобы вернуть заголовок Date
внутреннего ответа в качестве заголовка Timestamp
ответа метода API, столбец Заголовок ответа будет содержать запись Timestamp и связанную с ним Значение сопоставления должно быть установлено на integra.response.header.Date ....
Так что выше сводится к тому, что поддерживается DynamoDB .И, посмотрев на один из примеров API, таких как GetItem в документах https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html#API_GetItem_ResponseElements
HTTP/1.1 200 OK
x-amzn-RequestId: <RequestId>
x-amz-crc32: <Checksum>
Content-Type: application/x-amz-json-1.0
Content-Length: <PayloadSizeBytes>
Date: <Date>
{ response json excluded for brevity}
Так что я бы, вероятно, попытался использовать значение заголовка x-amzn-RequestId
в отображении
integration.response.header.x-amzn-RequestId
Возможно, что другие ответы не будут содержать этот заголовок, но в этом случае будет возможно включить трассировку запроса, которая в итоге приведет к выпадению X-Amzn-Trace-Id
заголовка
Чтоеще можно сопоставить
Документы по сопоставлению параметров ответа AWS указать доступный синтаксис для сопоставлений:
+--------------------------------------+------------------------+
| Mapped Data Source | Mapping expression |
+--------------------------------------+------------------------+
| Integration response header | integration.response.header.PARAM_NAME |
| Integration response header | integration.response.multivalueheader.PARAM_NAME |
| Integration response body | integration.response.body |
| Integration response body (JsonPath) | integration.response.body.JSONPath_EXPRESSION |
| Stage variable | stageVariables.VARIABLE_NAME |
| Context variable | context.VARIABLE_NAME that must be one of the supported context variables. |
| Static value | 'STATIC_VALUE'. The STATIC_VALUE is a string literal and must be enclosed within a pair of single quotes. |
+--------------------------------------+------------------------+
Мы также знаем, что PARAM_NAME
должно соответствовать регулярному выражению ^[a-zA-Z0-9._$-]+$
с этой же страницы документации.
Нет примеров, показывающих конкатенацию, хотя, даже если поддерживается синтаксис 'id='+context.requestId
, нет ничего, что могло бы помешать его удалению в будущем.
Другая альтернатива - шаблоны сопоставления
Шлюз API использует Velocity Template Language (VTL) для обработки шаблонов сопоставления тела для интеграции.n запрос и ответ об интеграции.Шаблоны отображения преобразуют полезные нагрузки запроса метода в соответствующие полезные нагрузки запроса интеграции и переводят тела ответа интеграции в тела ответа метода.
Существует руководство по AWS - Использование шаблона отображения для переопределенияПараметры запросов и ответов API и коды состояния
Шаблон может выглядеть примерно так, как показано ниже.Я еще не проверял это:
#set($cookieName = "id")
#set($cookieNameValSeparator = "=")
$input.json("$")
#set($context.responseOverride.header.Set-Cookie = "$cookieName$cookieNameValSeparator$context.requestId")