AWS api网关测试和curl中请求主体的差异

时间:2018-11-12 04:42:10

标签: amazon-web-services aws-lambda aws-api-gateway aws-serverless

我正在尝试向我的AWS API Gateway添加POST HTTP方法。我正在使用SAM框架和Python。

我发现从我的桌面(curl或邮递员)和AWS API Gateway“ TEST”生成响应时,响应的“正文”有所不同

现在,“ POST”命令仅打印由lambda_handler接收的“事件”对象。 (我正在使用一个对象来存储事件,如下所示)

def add(self):
    response = {
        "statusCode": 200,
        "body": json.dumps(self._event)
    }
    return response

当我使用API​​ Gateway控制台的“ TEST”选项时,输入:

{"username":"xyz","password":"xyz"}

我收到以下输出:

{
 "body": "{\"username\":\"xyz\",\"password\":\"xyz\"}",
<the rest of the response>
}

但是,当我发送curl(或邮递员)请求时:

curl --header "Content-Type: application/json"   --request POST   --data '{"username":"xyz","password":"xyz"}' <aws api gateway link>

我收到以下答复:

{
"body": "eyJ1c2VybmFtZSI6Inh5eiIsInBhc3N3b3JkIjoieHl6In0="
<the rest of the response>
}

您为什么认为两种测试之间有区别?

1 个答案:

答案 0 :(得分:2)

Curl和Postman似乎是自动通过Base64编码的身份验证凭据。

响应是相同的。后一个响应是第一个响应的Base64编码令牌。