簡體   English   中英

AWS API Gateway請求體作為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
     }
}

並且帖子的請求正文中的有效負載將是

{
    "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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM