我有一个用Java编写的AWS Lambda函数,它由AWS API网关调用触发。
我试图向其中一个endpoint发出POST
请求,并使用JSON作为有效负载。
curl -H "Content-Type: application/json" -X POST -d '{"firstName":"Mr", "lastName":"Awesome"}' https://someexample.execute-api.eu-central-1.amazonaws.com/beta/MethodHandlerLambda
然后,网关将检测内容类型
,并通过默认模板传递所有请求参数(包括正文)。有趣的是这一部分
#set($allParams = $input.params())
{
"body-json" : $input.json('$'),
....
它应该给我一张地图
public void myHandler(Map<String, Object> input, Context context){
input.keySet().forEach((key) -> {
System.out.println(key + " : " + input.get(key));
});
}
结果应该是这样的:
body-json : {"firstName":"Mr", "lastName":"Awesome"}
...
body-json : {firstName=Mr, lastName=Awesome}
另一种可能性是将整个身体作为字符串传递:
"body" : $input.body
但这也只是“转换”为
key=value
而不是key: value
我必须如何配置模板来简单地传递主体给我,以便我可以在JSON解析器中使用它?
再说一次——在这里发布一个问题,这样有助于自己找到答案:)
在AWS Api网关模板中,我将主体设置为
"body-json" : $input.body
它应该以String的形式返回完整的负载。
但更重要的是,我读了格雷格对自己问题的回答,并把我的方法改为
public void myHandler(InputStream inputStream, OutputStream outputStream, Context context) throws IOException{
final ObjectMapper objectMapper = new ObjectMapper();
JsonNode json = objectMapper.readTree(inputStream);
System.out.println(json.toString());
}
因此,只要有一个简单的InputStream
并将其作为JsonNode
读取就足够了,可以使用任何喜欢的JSON库(我使用的是Jackson-FasterXML)。瞧,它将所有可能的参数打包在一个JSON中(由模板指定)
{
"body-json": {
"firstName": "Mr",
"lastName": "Awesome"
},
"params": {
...
},
"stage-variables": {
...
},
"context": {
...
}
}
问题内容: 我已经按照npm软件包文档中的建议编写了axios POST请求,例如: 它可以工作,但是现在我修改了后端API以接受标头。 内容类型:“ application / json” 授权:“ JWT fefege …” 现在,此请求在Postman上可以正常工作,但是在编写axios调用时,我遵循 此链接 ,无法完全正常工作。 我经常出错。 这是我的修改请求: 任何帮助是极大的赞赏。 问
问题内容: 我正在尝试使用 nodejs 和 请求 [2] 向google QPX Express API [1]发出HTTP POST请求。 我的代码如下: 我想做的是使用multipart参数[3]传递JSON。但是我没有正确的JSON响应,而是收到一个错误(未定义400)。 当我使用CURL使用相同的JSON和API密钥发出请求时,它工作正常。因此,我的API密钥或JSON没错。 我的代码有
问题内容: 如何通过python模块Requests传递csrftoken?这就是我所拥有的,但是它不起作用,并且我不确定将其传递给哪个参数(数据,标头,身份验证…) 每次都有相同的错误消息。 问题答案: 如果要设置引荐来源标头,则对于该特定站点,您需要将引引来源设置为与登录页面相同的URL: 当使用不安全时,标头通常会被过滤掉,否则无论如何很容易被欺骗,因此大多数站点不再需要设置标头。但是,在使
如果我添加了一个特定的方法,比如POST而不将其设置为Lambda代理集成,那么我确实会看到provide request body data将其添加到Lambda函数中,并正确地反序列化到POJO中,然后返回 所以现在看起来一切都很好,但是当我使用HTTP方法POST对来自PostMan的AWS API URL进行实际测试时,我得到了以null作为约会Id的响应,并且我可以在CloudWatch
我有一个使用Cognito用户池授权器的方法。我想从上下文中获取主体Id,并通过自定义头传递给集成endpoint。我试过语境。授权人。一无所有的原则。i、 e标题没有显示。如果我设置为“硬编码”,它将显示。其他上下文选项,比如appId,似乎是Cognito特有的。 本质上,我试图让API网关处理工作中的令牌验证部分。