当前位置: 首页 > 知识库问答 >
问题:

AWS API网关:为什么post请求正文编码为base64?

宰子琪
2023-03-14

我使用API网关触发Lambda函数,使用Lambda代理集成,但是请求体编码为base64,这是为什么?我怎样才能把它改成JSON来字符串化JSON呢?

共有2个答案

夏兴平
2023-03-14

如果我理解您的问题是正确的,您将非base64编码的JSON有效负载作为请求发送到API网关,但是您的Lambda将其作为base64编码的字符串接收。

您似乎没有将Application/json设置为请求Content ent-type。您可以在此表中看到API网关如何决定集成请求Payload(最后一列)是Base64编码的字符串还是其他类型。

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-workflow.html

师谦
2023-03-14

这是因为您正在API网关中使用Lambda代理集成。如果您使用Lambda集成,就可以得到JSON。

您还可以将其更改为JSON,以便使用以下方法对JSON进行字符串化。

let buff = Buffer.from(event.body, "base64");
let eventBodyStr = buff.toString('UTF-8');
let eventBody = JSON.parse(eventBodyStr);
 类似资料:
  • 在默认情况下,我希望angular发出请求。不是JSON。 角度1.4.5 如何将整个应用程序配置为使用x-www-form-urlencoded而不使用自行车作为拦截器等。

  • 当我向azure功能发送请求时,我收到以下异常: 内部异常系统。系统上已处理NullReferenceException。运行时。例外服务。例外DispatchInfo。投掷:在AlidaDutilities。OnUnzipHttpTriggered d__0。MoveNext(AlidaDutilities,版本=1.0.0.0,区域性=neutral,PublicKeyToken=NullAl

  • 我有一个用Java编写的AWS Lambda函数,它由AWS API网关调用触发。 我试图向其中一个endpoint发出请求,并使用JSON作为有效负载。 然后,网关将检测,并通过默认模板传递所有请求参数(包括正文)。有趣的是这一部分 它应该给我一张

  • 我最近开始在我的android应用程序中使用改装,这是我添加用户的改装请求: 这里User是我想在服务器上注册的用户的模型类。问题是服务器需要Base64.encode()格式的json正文请求。有没有办法使用改装发送Base64编码数据? 我可以想到手动这样做: 然后在请求中传递这个。但是,我必须手动完成这项工作,并处理每个POST请求。有没有更干净的方法。

  • 我正在探索HTTP Origin检查作为Drupal在https://www.drupal.org/node/1803712的CSRF保护的想法 现在我正在测试Origin头是如何通过POST请求到达的,但是Firefox不会在用户登录表单提交上发送Origin头。Chromium和Chrome工作正常,他们发送Origin头。 Firefox版本是36.0.1。我还用一个干净的Firefox安装

  • 我是Mule ESB的新手,并尝试向REST服务发送post请求。请求的主体是字符串形式,请求应该是x-www-form-urlencoded。我将有效负载设置为我的参数并将请求发送给REST服务,但我得到了一个异常: 我的Rest URL是:(#[restURL])${dms.host}/api/Rest/session/login.json 我的参数是(设置为有效载荷#[restBody]):