gpt4 book ai didi

java - AWS API Gateway 请求正文作为函数的 Java POJO

转载 作者:行者123 更新时间:2023-11-30 05:35:38 24 4
gpt4 key购买 nike

我在使用 aws-lambda、API Gateway 和无服务器框架时遇到了一个非常基本的问题。我只是想将 post 请求的正文作为 Java POJO 移交。

好的,设置如下:

POJO:

public class Person {
private String lastName;
private string firstName;

... Setters and Getters omitted
}

处理程序:

public class PersonHandler implements RequestHandler<Person, ApiGatewayResponse> {
@Override
public ApiGatewayResponse handleRequest(lastNamePerson person, Context context) {
//... do something
}
}

帖子请求正文中的有效负载将为

{
"lastName" : "John",
"firstName" : "Doe"
}

最后但并非最不重要的一点是 serverless.yml

{
...
functions:person
handler:com.serverless.handler
event:
-http:
path:person
method:post
...
}

嗯,看起来很简单,不是吗?

不幸的是,事情没那么简单。调用该函数时,Person POJO 将始终为空。我们如何在 AWS API Gateway 和 Lambda 中将主体作为 POJO 提供?

最佳答案

好吧,通过长期的研究和一些猜测,我找到了答案,并决定将其发布在这里,以供将来的我(和其他人)找到。

但首先,让我们看看实际的问题。 body 不会在根目录中,而是在 input.body 下,然后 Jackson 就不知道在哪里可以找到你的人。

因此,首先我们需要从 lambda-proxy-integration 更改为 lambda-integration。

然后我们需要告诉集成将主体作为有效负载移交给函数。

这为我们提供了以下 serverless.yml:

{
...
functions:person
handler:com.serverless.handler
event:
-http:
path:person
method:post
integration:lambda
request:
template:
application/json:'$input.body'
...
}

瞧,现在您的 POJO 将被填充。希望这会有所帮助,如果有人找到更简单或更好的解决方案,请告诉我。

来源:

https://serverless.com/framework/docs/providers/aws/events/apigateway/#request-templates

Could not parse request body into json: Unexpected character (\'-\' (code 45)) AWS Lambda + API + Postman (用于格式化 yml)

关于java - AWS API Gateway 请求正文作为函数的 Java POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com