![](/img/trans.png)
[英]AWS Java Lambda Function with API Gateway - POJO input and OutputStream output
[英]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
}
}
並且帖子的請求正文中的有效負載將是
{
"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?
好吧,通過長時間的研究和一些猜測,我找到了答案,並決定將它發布在這里,以供將來我(和其他人)找到。
但首先,我們來看看實際問題。 身體不會在根部,而是在輸入體內,然后傑克遜不知道在哪里找到你的人。
所以,首先我們需要從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
無法將請求主體解析為json:意外字符(\\' - \\'(代碼45))AWS Lambda + API + Postman (用於格式化yml)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.