【问题标题】:How to request http method in AWS lambda handler in java?java - 如何在java中的AWS lambda处理程序中请求http方法?
【发布时间】:2017-01-11 15:17:25
【问题描述】:

如何在 JAVA 的 AWS Lambda 处理程序中请求使用的 HTTP 方法?有一个参数'context',但是看了下,无法请求使用的HTTP方法。

HTTP-方法有:GET、POST、PUT

顺便说一句:这是 javascript 的答案:How to get the HTTP method in AWS Lambda?

最好的问候, 拉尔斯

【问题讨论】:

  • JavaScript 的答案同样适用于 Java。您必须将 HTTP 方法映射到 API Gateway 映射模板中的上下文字段,如该答案中所述。
  • 感谢您的标记!我映射了“http-method”上下文字段。但是我怎样才能从java中访问这些信息呢?在 javascript 中,按照其他 stackoverflow 帖子中的描述扩展对象是没有问题的。
  • 我并没有真正在 AWS Lambda 中使用 Java,但看起来您必须将 API Gateway 映射模板中的任何自定义属性映射到事件对象,因为您无法扩展 Context 对象在 Java 中。
  • 好的。但是我们使用自定义对象作为处理程序中的第一个参数。但是由于我们刚开始使用 AWS lambda 进行开发...也许我们应该切换到 javascript ;)

标签: java amazon-web-services lambda aws-lambda


【解决方案1】:

对于如何在 Java 中接收 httpMethod,您有多种选择。最简单的方法之一是在 API Gateway 的集成请求中将 'http-method' 重命名为 'httpMethod',然后将 RequestHandler 接口用于您的 Lambda 处理程序,该处理程序会将您的 JSON 直接编组为 Java 对象:

package example;

import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.Context; 

public class Hello implements RequestHandler<PojoRequest, PojoResponse> {

    public PojoResponse handleRequest(PojoRequest request, Context context) {
        System.out.println(String.format("HTTP method is %s.", request.getHttpMethod()));
        return new PojoResponse();
    }
}

然后你可以创建任何你想成为请求的 Pojo,例如:

package example;

public class PojoRequest {
    private String firstName;
    private String lastName;
    private String httpMethod;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getHttpMethod() {
        return httpMethod;
    }

    public void setHttpMethod(String httpMethod) {
        this.httpMethod = httpMethod;
    }
}

见:http://docs.aws.amazon.com/lambda/latest/dg/java-handler-using-predefined-interfaces.html

【讨论】:

  • 感谢 Dave 提供的解决方法。但我不会在我的实体对象中 http 信息。没有其他选择吗?
猜你喜欢
  • 2022-06-16
  • 2016-08-06
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 2022-11-20
  • 2018-01-28
相关资源
最近更新 更多