Я использую серверную среду для написания лямбда-функции AWS на Java.Мой класс обработчика выглядит следующим образом:
public class ConstructionHandler implements RequestHandler<Location,
ApiGatewayResponse> {
private static final Logger LOG = LogManager.getLogger(ConstructionHandler.class);
@Override
public ApiGatewayResponse handleRequest(Location input, Context context) {
ObjectMapper objectMapper = new ObjectMapper();
try {
String locationJson = objectMapper.writeValueAsString(input);
LOG.info("received: " + locationJson);
} catch(Exception e) {
LOG.error("Exception occurred here: " + e.getMessage());
e.printStackTrace();
}
// do something useful
// return response
}
}
Мой объект местоположения - это простой POJO, описываемый следующим образом:
public class Location {
private double x;
private double y;
public Location(double x, double y) {
this.x = x;
this.y = y;
}
public Location() {
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
}
Lambda настроен в моем serverless.yml следующим образом:
functions:
construct:
handler: com.serverless.ConstructionHandler
events:
- http:
path: /construct
method: post
Я использовал плагин Chrome Postman для запуска POST-запроса к лямбде, после развертывания на AWS со следующим телом запроса:
{"x": 3.0, "y": 4.0}
К сожалению, если я зайду в Cloudwatch, в журнале будет десериализован следующий объект:
{"x": 0.0, "y": 0.0}
Кто-нибудь знает, почему первоначальные значения были потеряны?Заранее спасибо за любую помощь!