【发布时间】:2019-07-11 20:00:40
【问题描述】:
我想使用 Micronaut 创建一个 CRUD API 并将其部署在 AWS Lambda 上,使用 Amazon API Gateway 公开不同的方法。我可以为每个端点(GET、POST...)创建不同的 Kotlin 项目,一个包括一个函数,但这有点麻烦,所以我宁愿有一个包含所有 CRUD 函数的项目。
我当前的应用程序包含两个函数:一个供应商 (GET) 和一个消费者 (POST)。
应用:
object Application {
@JvmStatic
fun main(args: Array<String>) {
Micronaut.build()
.packages("micronaut.aws.poc")
.mainClass(Application.javaClass)
.start()
}
}
供应商:
@FunctionBean("micronaut-aws-poc")
class MicronautAwsPocFunction : Supplier<String> {
override fun get(): String {
println("GET")
return "micronaut-aws-poc"
}
}
消费者:
@FunctionBean("micronaut-aws-poc-post")
class MicronautAwsPocPostFunction : Consumer<String> {
override fun accept(t: String) {
println("POST $t")
}
}
然后,我使用一种 GET 和一种 POST 方法在 Amazon API Gateway 中创建了一个资源。问题是,无论我调用哪一个,MicronautAwsPocFunction 总是被调用。
- 是否可以/建议在一个 jar 中嵌入许多功能?
- 如何让 POST 调用调用 MicronautAwsPocPostFunction 而不是 MicronautAwsPocFunction?
- 如果我想要一个额外的 PUT 函数,我该如何建模?
【问题讨论】:
标签: amazon-web-services aws-lambda aws-api-gateway micronaut