Spring Cloud Function是否适合REST API?如何访问GET路径参数?

Har*_*ran 6 spring spring-cloud aws-lambda spring-webflux serverless

我是WebFlux和Serverless的新手。我正在尝试通过AWS API网关将REST API创建为无服务器。

该流程将是API网关-> Lambda-> DynamoDB

为了实现API流程,Spring Cloud Function是最佳选择吗?我发现aws-serverless-java-container无缝地完成了这项工作(将事件转换为http请求/响应的包装器)

我浏览了http://cloud.spring.io/spring-cloud-function/single/spring-cloud-function.html上的文档以及https://github.com/spring-cloud/上的一些示例弹簧云功能。但是,我仍然不确定是否可以使用Spring Cloud Function实现API风格。

@Bean
//How path or query params can be mapped?
public Function<Flux<String>, Flux<String>> getEmployeeDetails() {
 // business logic goes here
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,如何实现GET请求/响应模型。如果我的端点具有/ {dept} / {employee} / {name},那么Spring cloud函数如何在GET请求中接受路径参数?

任何指针都会有所帮助。

Val*_*ura 1

我也有同样的错误,文档提示你认为你可以这样做,但你不能。这只是 spring-cloud-function 的一个示例,并且 springboot 函数 aws 特定代码没有实现此功能(据我所知)。

如果您想使用 spring 在 lambda 中实现应用程序,您可以遵循默认路线: https: //github.com/awslabs/aws-serverless-java-container/blob/master/samples/springboot/pet-store

或者...如果你愿意,你可以尝试困难的方法,但是尝试:你完全孤独: https: //github.com/arawn/building-serverless-application-with-spring-webflux

该项目本身实现了 ObjecMapper 转换,您可以从请求中获取参数:https://github.com/arawn/building-serverless-application-with-spring-webflux/blob/master/src/main/java/serverless/aws /springframework/http/server/reactive/SimpleAPIGatewayProxyServerHttpRequest.java

这里的技巧是在带有代理的 lambda 中创建路径模板(路径:'/{proxy+}'),并且请求从 aws 映射器委托。

祝你好运!