当前位置: 首页 > 知识库问答 >
问题:

如何将路径参数从API网关API映射到Java Lambda的请求对象

袁高明
2023-03-14
{
  "id": "be1c320a-144f-464d-b32c-38ec7fb4445b",
  "userId": "foobar"
}

我想创建一个API,其中get请求

/users/foobar/items/be1c320a-144f-464d-b32c-38ec7fb4445b

/users/{userId}/items/{id}

叫这个兰姆达。

并且我创建了get方法(在/users/{userId}/items/{id})并将其关联到lambda。

我尝试过创建模板映射(并尝试过RTFM),但无法看到如何将路径参数映射到主体。

我如何实现这个映射?

共有1个答案

叶越
2023-03-14

我认为您的请求对象结构可能配置不正确。可能有几种方法可以对其进行配置。这里有一些信息对我有帮助。

如何从Amazon API Gateway向AWS Lambda传递querystring或route参数-演示了这个映射(尽管使用了python)。但是,如果您启用“Use Lambda Proxy Integration”(使用Lambda Proxy Integration),则可以使用Java类似地这样做:

@Override
public Object handleRequest(APIGatewayProxyRequestEvent input, Context context) {

    Map<String, String> pathParameters = input.getPathParameters();
    String id = pathParameters.get("id");
    String userId = pathParameters.get("userId");

    // Handle rest of request..

}

这是一个使用无服务器框架创建Java Api的教程。本教程通过解析输入而不是使用ApigatewayProxyRequestEventjava类来访问PathParameters

@Override
public Object handleRequest(Map<String, Object> input, Context context) {

    try {
        // get the 'pathParameters' from input
        Map<String,String> pathParameters =  (Map<String,String>)input.get("pathParameters");
        String id = pathParameters.get("id");
        String userId = pathParameters.get("userId");

    } catch (Exception ex) {
        logger.error("Error in retrieving product: " + ex);

    }
}
 类似资料:
  • 将JSON对象映射到类c#属性用例:我在Azure函数中创建API,并将参数ReservationDraftRequestDto传递到类,如下面的代码所示 [FunctionName("Function1")]公共静态异步任务运行([http trigger(authorization level。Function," get "," post ",Route = null)]Reservatio

  • 我试图将Lambda函数的JSON输出映射到API网关调用的头部。作为示例,我们可以考虑重定向场景。因此,我想在API网关调用的响应中添加一个头。 Lambda函数的JSON输出: 在“方法响应”中- 然后在“集成响应”中- 现在我的问题是这个东西应该是什么? 注意:我已经尝试过,或使用“映射模板”,但到目前为止没有运气。 目前有可能不可能(https://forums.aws.amazon.co

  • https://skjdfsdj.execute-api.us-east-1.amazonaws.com/test/name/name2 在下一个示例中,它将是prod: https://skjdfsdj.execute-api.us-east-1.amazonaws.com/prod/name/name2 你知道这会怎么做吗? 谢谢,本尼

  • 当我发送一个带有POST请求的正文时,我的模板映射似乎被有效负载覆盖了。 我有一个调用Lambda函数的API网关资源。Lambda函数很简单,它只是回显它接收到的内容。 这个名为echo的Lambda函数通过POST调用Lambda函数。POST方法有一个集成请求映射模板(直接来自文档): 当我在没有尸体的情况下提出请求时,我会得到我期望的答复: 但是,当我用主体发出请求时,模板映射不再工作:

  • 我知道有很多关于映射请求数据的问题,但这两个都帮不了我。所以,我试图实现的是一个映射到lambda的APIendpoint。当bucket触发404时,将转发到该endpoint的请求,并且参数通过请求路径传递给lambda,例如:/{image_name}/{width}/{height}。lambda的代码只调用 在集成请求中,我创建了三个映射模板:plain/text、plain/html、