簡體   English   中英

AWS Lambda向API Gateway發送響應

[英]AWS Lambda send response to API Gateway

我有一個lambda函數生成一些文本。 這是一個簡單的Twilio應用程序

<Say>Welcome to your conference room!</Say>
<Dial>
   <Conference beep="true">waitingRoom</Conference>
</Dial>

當我使用郵遞員發出POST請求時,它會完全輸出。 但我有兩個問題:

  1. 標題返回application / json,我需要它作為text / xml。
  2. 當我從Twilio發出POST請求時,我得到502 Bad Gateway

我知道它必須對傳入的params映射做一些事情,並將響應從Lambda映射回API網關作為text / xml。 但我可以理解如何做到這一點。

在此輸入圖像描述 在此輸入圖像描述

我使用以下模板映射基本上只是刪除引號,它工作:


$ input.path( '$')

我很高興不成為唯一一個與AWS Api Gateway斗爭的人:)

據我所知,AWS Api Gateway主要面向JSON。 如果您可以更改返回的響應的內容(使用JSON),也許您可​​以解決您的問題:

{"say": "Welcome to your conference room!",
 "dial": [{
        "conference": [{
                "beep": "true",
                "name": "waitingRoom"
        }]
    }
]}

然后,您可以使用映射模板功能(在Integration響應屏幕中)映射此內容,方法是將內容類型設置為“application / json”的模板添加,並將映射模板設置為:

<Say>$input.json('say')</Say>
<Dial>
    <Conference beep="$input.json('dial.conference.beep')">$input.json('dial.conference.name')</Conference>
</Dial>

這有助於你或我錯過了什么嗎?

要修改響應中的Content-Type,您需要在API網關中配置2個區域:方法響應和集成響應。

在方法響應中,您為200狀態代碼添加Content-Type響應標頭。

在Integration Response中,打開200響應並將Content-Type的值設置為text / xml。

以下是我在回復html內容時寫的一篇文章的截圖。 您的情況聽起來非常相似,因為您希望返回恰好包含xml並且發送了正確的Content-Type標頭的字符串類型。

方法響應: 方法響應

整合響應: 整合響應

以下是原始文章的鏈接: http//kennbrodhagen.net/2016/01/31/how-to-return-html-from-aws-api-gateway-lambda/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM