【问题标题】:Aws Lambda: How to get query params from Api Gateway in lambda function implemented in JavaAws Lambda:如何在用 Java 实现的 lambda 函数中从 Api Gateway 获取查询参数
【发布时间】:2018-03-07 14:46:13
【问题描述】:

Aws Lambda - 如何在用 Java 实现的 lambda 函数中从 Api Gateway 获取查询参数。

我有以下代码 sn-p :

package com.amazonaws.lambda.demo;

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

public class LambdaFunctionHandler implements RequestHandler<String, String> {

    @Override
    public String handleRequest(String input, Context context) {
        context.getLogger().log("Input: " + input);

        // TODO: implement your handler
        return "Hello from " + input;
    }
}

如果上面的 handleRequest 函数中有任何查询参数,我如何访问。

【问题讨论】:

    标签: java aws-lambda aws-api-gateway


    【解决方案1】:

    您可以尝试在 API Gateway 的集成请求正文映射模板中映射您想要的所有内容。一旦你构建了身体映射模板,那么在 lambda 的上下文中,你将得到你构建的 excat json。

    请找到下面的链接,我已经为类似问题提供了解决方案,

    https://stackoverflow.com/a/46407780/7666972

    【讨论】:

    • 谢谢 Vijayanath,我会试试这个然后回来。
    【解决方案2】:

    pom.xml 中确保在此处指定“2.2.5”或更新版本

    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-lambda-java-events</artifactId>
      <version>2.2.5</version>
    </dependency>
    

    你的 java lambda 类:

    import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
    import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
    
    public class LambdaFunctionHandler
        implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
        @Override
        public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input,
                Context context) {
            Map<String, String> inputParams = input.getPathParameters();
    
            APIGatewayProxyResponseEvent responseEvent = new APIGatewayProxyResponseEvent();
            responseEvent.setBody("body text");
            responseEvent.setStatusCode(200);
            return responseEvent;
        }
    }
    

    【讨论】:

    • 这对我不起作用。我还需要配置其他东西吗?
    【解决方案3】:

    根据上面tgk23的回答,我相信你是在找查询参数,而不是路径参数:

    public class LambdaFunctionHandler
            implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
        @Override
        public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input, Context context) {
            Map<String, String> inputParams = input.getQueryStringParameters();
            for (Map.Entry<String, String> entry : inputParams.entrySet()) {
                LOGGER.info("param: " + entry.getKey() + "=" + entry.getValue());
            }
    
            APIGatewayProxyResponseEvent responseEvent = new APIGatewayProxyResponseEvent();
            responseEvent.setBody("body text");
            responseEvent.setStatusCode(200);
            return responseEvent;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-28
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2020-08-21
      • 2017-05-08
      相关资源
      最近更新 更多