gpt4 book ai didi

amazon-web-services - 从AWS API Gateway返回HTML

转载 作者:行者123 更新时间:2023-12-03 12:06:13 24 4
gpt4 key购买 nike

我正在尝试实现与this post相同的功能,但是我不明白那里的答复,也没有权限在注释中要求澄清。

我有一个API网关端点,该端点接受GET请求,将一些请求变量传递给Lambda函数(在Python中实现),并通过空响应模型返回text / html(如here所述)

如前面的SO问题中所述,如果Lambda函数返回HTML字符串,并且API端点使用默认的Output Passthrough行为@ Integration Response,则会引用HTML输出:

"\n<html>\n<body>\n ... \n</body>\n</html>\n"

该答案(@ARUNBALAN NV的回答)说:“只需将HTML标记存储在变量中并返回它即可。”,但是我不确定在Lambda函数的上下文中这意味着什么。这是否意味着返回带有名为“variableHTML”的元素的“a​​pplication / json”响应?像这样吗
"{\"variableHTML\": \"\\n<html>\\n<body>\\n ... \\n</body>\\n</html>\\n\"}"

我将其设置为&在API Gateway中,我的集成响应现在完全按照建议使用映射来提取元素(对于200个应用程序/ json响应):
#set($inputRoot = $input.path('$')) 
$inputRoot.variableHTML .

现在的结果是返回了一个点。

我尝试了许多变体(用$ input.json代替$ input.path,在不同阶段使用不同的内容类型,等等),但感觉上面的设置与其他线程接受的答案最接近。

我对此有何毛病的任何见解将不胜感激。谢谢阅读!

最佳答案

你很亲密理解这一点的关键是要意识到,无论您返回的任何Python对象都将被序列化为JSON。因此,如果您返回一个字符串,它将被引用并转义为有效的JSON对象。如果需要此字符串的值,请使用以下“集成响应”映射:

#set($inputRoot = $input.path('$')) 
$inputRoot
#set行为 $inputRoot提供了您的Python程序返回的整个JSON对象的值...这只是您在Lambda框架将其转换为JSON之前返回的原始字符串。

假设您想在映射中而不是在程序中构建响应。然后,您可以返回一个Python对象,而不是返回Python字符串,如下所示:
return {"title": "Greeting", "message": "Hello"}

您的映射可以将其转换为HTML,如下所示:
#set($inputRoot = $input.path('$')) 
<html><head><title>$inputRoot.title</title></head>
<body>$inputRoot.message</body></html>

但是,如果要返回结构化数据,则使用这种方式的映射比简单的HTML更有用。我将使用上面的第一个映射解决您的问题。

关于amazon-web-services - 从AWS API Gateway返回HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33614198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com