AWS API 网关请求正文作为函数的 Java POJO
AWS API Gateway request body as Java POJO for function
我在使用 aws-lambda、API 网关和无服务器框架时遇到了一个非常基本的问题。我只是想将 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
}
}
并且 post 的请求正文中的有效负载将是
{
"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?
好吧,通过长时间的研究和一些猜测,我找到了答案并决定post 把它放在这里,以供将来我(和其他人)找到。
但首先,让我们看一下实际问题。正文不会在root里而是在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)
我在使用 aws-lambda、API 网关和无服务器框架时遇到了一个非常基本的问题。我只是想将 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
}
}
并且 post 的请求正文中的有效负载将是
{
"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?
好吧,通过长时间的研究和一些猜测,我找到了答案并决定post 把它放在这里,以供将来我(和其他人)找到。
但首先,让我们看一下实际问题。正文不会在root里而是在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)