为何AWS Lambda函数返回JSON而非纯文本?如何调整API响应?
解决API Gateway触发Lambda后返回整个JSON的问题
你遇到的问题核心在于:要么API Gateway没正确解析Lambda的返回结构,要么缺少告诉浏览器如何渲染内容的响应头。这里给你两种对应场景的解决方案:
场景1:使用Lambda Proxy集成(推荐)
如果你的API Gateway配置的是Lambda Proxy集成(这是最常用的触发方式),只需要在返回的响应头里添加Content-Type: text/plain,明确告诉浏览器这是纯文本内容,同时保留现有的返回结构即可。修改后的代码如下:
def lambda_handler(event, context): resp = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*", "Content-Type": "text/plain" # 新增该行,指定内容类型为纯文本 }, "body": "Hello, World!" } return resp
添加这个头后,浏览器会识别到响应是纯文本格式,只会渲染body里的「Hello, World!」内容,而不是整个JSON结构。
场景2:使用普通Lambda集成
如果你的API Gateway没启用Proxy集成,而是普通的Lambda集成,那Lambda不需要返回包含statusCode、headers的JSON结构,直接返回你想要显示的文本即可:
def lambda_handler(event, context): return "Hello, World!"
这种情况下,API Gateway会直接把Lambda的输出作为响应体返回给浏览器,默认会处理成纯文本类型。
小提示
不确定自己用的是哪种集成方式?可以登录API Gateway控制台,找到对应的集成请求,查看是否勾选了「Use Lambda Proxy integration」选项。
内容的提问来源于stack exchange,提问作者GSto
相关产品推荐
相关产品推荐

