AWS API网关请求主体作为函数的Java POJO
我在使用aws lambda、API网关和无服务器框架时遇到了一个非常基本的问题。我只是想将post请求的主体作为JavaPOJO提交 好的,下面是设置: POJO: 处理程序:AWS API网关请求主体作为函数的Java POJO,java,amazon-web-services,aws-lambda,serverless-framework,Java,Amazon Web Services,Aws Lambda,Serverless Framework,我在使用aws lambda、API网关和无服务器框架时遇到了一个非常基本的问题。我只是想将post请求的主体作为JavaPOJO提交 好的,下面是设置: POJO: 处理程序: public class PersonHandler implements RequestHandler<Person, ApiGatewayResponse> { @Override public ApiGatewayResponse handleRequest(lastNamePerso
public class PersonHandler implements RequestHandler<Person, ApiGatewayResponse> {
@Override
public ApiGatewayResponse handleRequest(lastNamePerson person, Context context) {
//... do something
}
}
最后但并非最不重要的是serverless.yml
{
...
functions:person
handler:com.serverless.handler
event:
-http:
path:person
method:post
...
}
看起来很直截了当,不是吗
不幸的是,事情并没有那么简单。调用函数时,Person POJO将始终为空。我们如何在AWS API Gateway&Lambda中将身体作为POJO提供?好吧,通过长期的研究和猜测,我找到了答案,并决定将其发布在这里,供未来的我(和其他人)找到 首先,让我们来看看实际问题。身体将不在根中,而是在input.body下,然后Jackson不知道在哪里找到你的人 因此,首先我们需要从lambda代理集成更改为lambda集成 然后我们需要告诉集成将主体作为有效载荷移交给函数 这为我们提供了以下serverless.yml:
{
...
functions:person
handler:com.serverless.handler
event:
-http:
path:person
method:post
integration:lambda
request:
template:
application/json:'$input.body'
...
}
瞧,现在你的POJO将被填充。
希望这能有所帮助,如果有人找到更简单或更好的解决方案,请告诉我
资料来源:
(用于格式化yml)
{
...
functions:person
handler:com.serverless.handler
event:
-http:
path:person
method:post
...
}
{
...
functions:person
handler:com.serverless.handler
event:
-http:
path:person
method:post
integration:lambda
request:
template:
application/json:'$input.body'
...
}