![](/img/trans.png)
[英]Aws Lambda: How to get query params from Api Gateway in lambda function implemented in Java
[英]Java : How to get a Request object for your AWS Lambda event from API Gateway?
有什么方法可以獲取JAVA中的 lambda 函數中的值? 我可以看到nodejs中有 event.params 但我無法在 Java 中找到類似的方法。
我可以在 API Gateway Content-Type 中使用它,
{
"name": "$input.params('name')"
}
但,
我們如何在Java中的 AWS Lambda 中獲取此輸入?
來自 Java 中 Lambda 函數處理程序的文檔(強調我的):
處理程序的一般語法如下:
outputType handler-name(inputType input, Context context) { ... }
inputType – 第一個處理程序參數是處理程序的輸入,它可以是事件數據(由事件源發布)或您提供的自定義輸入,例如字符串或任何自定義數據對象。 為了使 AWS Lambda 成功調用此處理程序,必須使用可序列化為輸入參數的數據類型的輸入數據調用該函數。
所以這將在您的input
參數中可用。
代碼示例:復制代碼段並自己實現
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestStreamHandler;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class ClassName implements RequestStreamHandler {
@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream,
Context context) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
JSONObject response = new JSONObject();
JSONParser parser = new JSONParser();
try {
JSONObject event = (JSONObject) parser.parse(reader);
//your code here. Use the jsonObject as you wish
response.put("isBase64Encoded", false);
response.put("statusCode", 200);
response.put("headers", headerJson);
response.put("body", "");
} catch (Exception ex) {
ex.printStackTrace();
response.put("statusCode", int);
response.put("exception", ex);
}
OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
writer.write(response.toString());
writer.close();
}
}
對於響應對象 JSON 格式,請點擊鏈接: https ://aws.amazon.com/premiumsupport/knowledge-center/malformed-502-api-gateway/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.