Jie*_*ang 5 java rest json aws-lambda aws-api-gateway
如果我使用 AWS API 网关并将集成类型设置为 lambda 函数,在 lambda 函数的 Java 实现中,是否可以覆盖RequestHandler
(而不是RequestStreamHandler
)?这样我的 lambda 函数的输入将是我在 Java 代码中定义的一个 POJO,它的输出将是另一个 POJO,客户端只需要发送该请求 POJO 的 JSON 序列化并接收响应 POJO 的 JSON 序列化。我试过这样做,但无论我的客户发送什么,它都会收到一个空的 200 响应。
不知道这里出了什么问题,有人可以帮忙吗?
So I create a sample app
LambdaFunctionHandler.java
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<RequestClass, ResponseClass> {
public ResponseClass handleRequest(RequestClass input, Context context) {
context.getLogger().log("Input: " + input);
// TODO: implement your handler
ResponseClass myVal = new ResponseClass();
myVal.setGreetings("Hello from POJO - " + input.getName() );
return myVal;
}
}
Run Code Online (Sandbox Code Playgroud)
ResponseClass.java
package com.amazonaws.lambda.demo;
public class ResponseClass {
String greetings;
public String getGreetings() {
return greetings;
}
public void setGreetings(String greetings) {
this.greetings = greetings;
}
public ResponseClass(String greetings) {
this.greetings = greetings;
}
public ResponseClass() {
}
}
Run Code Online (Sandbox Code Playgroud)
RequestClass.java
package com.amazonaws.lambda.demo;
public class RequestClass {
String name;
public String getName() {
return name;
}
public void setName(String firstName) {
this.name = firstName;
}
public RequestClass(String name) {
this.name = name;
}
public RequestClass() {
}
}
Run Code Online (Sandbox Code Playgroud)
After uploading the same to AWS, I created a API Gateway for the same
And the tests on the same
As you can see POJO works in Lambda + API Gateway combination