Использование содержимого файла HTML в строке JSON в оболочке или Makefile (AWS) - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь использовать интерфейс командной строки AWS apigateway, чтобы установить шаблон отображения ответа интеграции для одной из моих конечных точек в моем API. Этот конкретный случай включает использование text / html в качестве моего Content-Type, и в качестве такового мой шаблон отображения представляет собой необработанный HTML-код. В зависимости от определенных обстоятельств я хотел бы использовать интерфейс командной строки для установки шаблона отображения на другой код HTML. В связи с этим я пытаюсь прочитать содержимое HTML из указанного файла в строку --response-template JSON, которая заполнит шаблон сопоставления.

Команда для этого следующая:

aws apigateway put-integration-response 
   --rest-api-id $(restApiId) --resource-id $(resourceId) \
   --http-method POST --status-code 200 \
   --selection-pattern "" \
   --response-parameters '{"method.response.header.Content-Type":"'"'"'text/html'"'"'"}' \
   --response-templates '{"text/html": "<!DOCTYPE html><html lang="en"><body><p>Hello, world</p></body></html>"}'

Я изначально пытался сделать это в Makefile, отсюда и переменные, но я открыт для создания сценария оболочки для достижениятоже самое. Мой HTML-файл намного больше, чем в приведенном выше примере, и содержит сценарии с функциями, скобками, объектами JSON, множеством строк в таблицах стилей и тому подобным - другими словами, многие символы, которые необходимо экранировать. Я не могу вручную изменить файл HTML, и я не уверен, что смогу изменить его с помощью escape-символов, поскольку шаблон отображения должен быть точным содержимым HTML, поскольку именно это и отображается.

Могу ли я поместить все содержимое файла HTML в часть значения этой строки JSON? Если так, как я могу заставить это работать?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 31 октября 2019

Саймон предложил возможное решение этой проблемы при использовании подхода CLI AWS, но я решил это по-другому.

Я решил использовать скрипт Python с AWS Python SDK, Boto3 . Я использовал библиотеку Python json, чтобы вывести содержимое файла HTML в допустимый формат JSON, используя json.dumps(). Я поместил это в качестве значения для объекта JSON, который в конечном итоге использовался в функции Boto3 ниже, и сделал внутреннюю замену значения, когда я отправил его с json.loads(). Я проследовал по верхнему ответу по этой ссылке о том, как преобразовать исходный HTML-код в объект json .

Я использовал функцию Boto3 put_integration_response() и отправил этот объект JSONкак --response-template, который работал для меня.

...