Я хочу создать CRUD API с помощью Micronaut и развернуть его на AWS Lambda, предоставляя различные методы с помощью Amazon API Gateway. Я мог бы создать разные проекты Kotlin для каждой конечной точки (GET, POST...), один из которых включает одну функцию, но это довольно громоздко, поэтому я бы предпочел иметь один проект со всеми функциями 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")
}
}
Затем я создал ресурс в Amazon API Gateway с одним методом GET и одним методом POST. Проблема в том, что независимо от того, какой из них я вызываю, MicronautAwsPocFunction всегда вызывается.
- Возможно/рекомендуется ли встраивать много функций в одну банку?
- Как я могу заставить вызовы POST вызывать MicronautAwsPocPostFunction вместо MicronautAwsPocFunction?
- Если мне нужна дополнительная функция PUT, как я могу ее смоделировать?