amazon-web-services - aws api网关测试和curl中请求正文的区别

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

我正在尝试将 POST HTTP 方法添加到我的 AWS API 网关。我在 Python 中使用 SAM 框架。

我发现从我的桌面(curl 或 postman )和 AWS API 网关“TEST”生成的响应的“正文”有所不同

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

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

当我使用 API 网关控制台的“测试”选项时,输入:

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

我收到以下输出:

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

但是,当我发送 curl(或 postman )请求时:

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

我得到以下响应:

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

为什么您认为这两个测试之间存在差异?

最佳答案

Curl 和 Postman 似乎会自动对您的身份验证凭据进行 Base64 编码。

答案是一样的。后一个响应是第一个响应的 Base64 编码 token 。

关于amazon-web-services - aws api网关测试和curl中请求正文的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53256069/

相关文章:

ruby - 如何在 AWS Lambda 函数中安装/使用 Ruby gems?

node.js - AWS-SDK:S3的列表对象中的查询参数

aws-lambda - lambda (EventSource MQTT) 的 SAM 部署失败,参数 VIRTUAL_HOST 无效

node.js - 带 Lambda 集成的无服务器响应模板

amazon-web-services - 地形错误 : Extraneous label for module when running terraform init

amazon-web-services - 使用 CloudFormation 在 EC2 上设置 IIS

php - 适用于 PHP 的 AWS 开发工具包中的 Promise 不起作用并且没有错误返回

amazon-web-services - AWS API-Gateway 与 SNS 通信

amazon-web-services - 如何使 AWS api 网关接受 http 而不是 https

amazon-web-services - 启用成本分配标签后,它们不会出现在成本资源管理器中