2017-01-11 47 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信息。沒有其他選擇嗎? –