2017-01-11 48 views
1

如何在JAVA中的AWS Lambda处理程序中请求使用的HTTP方法?有一个参数'context',但看过之后,我无法请求使用的HTTP方法。如何在java中的AWS lambda处理程序中请求http方法?

HTTP的方法是:GET,POST,PUT

BTW:这里是JavaScript的答案:How to get the HTTP method in AWS Lambda?

最好的问候, 拉尔斯

+1

这个答案对JavaScript将很好的工作为Java。您必须将HTTP方法映射到API网关映射模板中的上下文字段,如该答案中所述。 –

+0

感谢你的标记!我映射了'http-method'上下文字段。但是我怎样才能从java访问这些信息呢?在JavaScript中,它没有问题扩展对象,如其他stackoverflow帖子中所述。 –

+0

我在AWS Lambda中没有真正使用Java,但看起来您必须将API网关映射模板中的任何自定义属性映射到事件对象,因为您无法扩展Java中的Context对象。 –

回答

1

你有你如何能接受几个选项Java中的httpMethod。一个最简单的将是在API网关您的合并请求重命名'http-method''httpMethod',然后使用RequestHandler接口为您的拉姆达的处理程序,这将直接封你的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

+0

感谢戴夫为此解决方法。但是我不会在我的实体对象中使用http信息。没有其他选择吗? –