【问题标题】:How to get path parameter in spring cloud function如何在spring cloud函数中获取路径参数
【发布时间】:2022-11-03 15:02:20
【问题描述】:

我有一个使用 spring-cloud-functions 编写并部署在连接到 aws api-gateway 的 aws lambda 中的 java 应用程序

我有一个'GET' api(比如说/employees/{employeeId}),它接受一个输入参数(在这种情况下为{employeeId})并返回与参数对应的结果(给定employeeId 的员工详细信息)。

我尝试使用谷歌搜索,但找不到一种方法来设置它,以便我将 {employeeId} 传递给我的 spring-cloud-function 代码并采取相应的行动。如何获取java代码中的参数?

谁能建议如何在 api-gateway 中进行设置并在我的 java lambda 代码中获取相同的参数?

谢谢。

【问题讨论】:

标签: aws-lambda get api-gateway spring-cloud-function path-parameter


【解决方案1】:

我使用 REST API 和 lambda 集成。我们需要将路径参数和查询参数转换为 lambda 可以使用的事件对象。

所以在这里,在集成选项卡中:

您可以参考这里了解详细信息: AWS Knowledge Centre Article

同样的逻辑也可以应用于路径参数。

【讨论】:

    【解决方案2】:

    我们可以尝试解决任何类型的请求,我们将获得请求的 uri。

    从标头中提取 uri,为 spring cloud 函数提供输入应该是 Message 类型或任何其他接受标头的类型

    @Bean
    public Function<Message<Void>, Message<?>> api(){}
    
    String uri = (String) request.getHeaders().get("uri");
    

    对于当量:
    URI:/post/12345

    Uri Template 可用于提取字符串中的参数

    private HashMap<String, String> getPathParameters(String uri, String strUrlTemplate) {
            UriTemplate template = new UriTemplate(strUrlTemplate);
            Map<String, String> parameters = new HashMap<>();
            return new HashMap<>(template.match(uri));
        }
    

    该函数接受 uri 和在本例中为 /post/{id} 的模板

    这将返回一张地图

    {
        "id":"12345"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2019-01-24
      • 2018-11-13
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多