Микронавт Lambda с прокси не может демаршировать объект из тела json io.micronaut.web.router.exceptions.UnsatisfiedRouteException - PullRequest
0 голосов
/ 19 февраля 2019

В Micronaut Lambda с интеграцией прокси у меня есть контроллер, который должен демаршировать контент JSON в объект Ping:

@Controller("/ping")
class PingController {

    private val logger = LoggerFactory.getLogger(javaClass)

    @Get("/")
    fun getPing(@Header("Host") host: String): Ping {
        logger.info("Host Header {}", host)
        return Ping("myPing")
    }

    @Post("/")
    @Status(HttpStatus.CREATED)
    fun createPing(@Body ping: Ping): Ping {
        logger.info("ping {}", ping)
        return ping
    }
}

Если я запускаю это приложение как локальное веб-приложение для микронавтов, я могу выполнить это успешно:

curl -X POST localhost:8080/ping -d '{"value": "myvalue"}' -H "Content-type: application/json"

Информация журнала:

INFO  m.aws.api2.poc.PingController - ping Ping(value=myvalue)

Однако, когда этот метод контроллера вызывается из Менеджера API AWS, передается заголовок Content-Type и информация тела ...

enter image description here

... происходит сбой:


14:56:18
io.micronaut.web.router.exceptions.UnsatisfiedRouteException: Required argument [Ping ping] not specified

14:56:18
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:279)

14:56:18
at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:122)

14:56:18
at io.micronaut.function.aws.proxy.MicronautLambdaContainerHandler.lambda$null$1(MicronautLambdaContainerHandler.java:240)

14:56:18
at io.reactivex.internal.operators.flowable.FlowableDefer.subscribeActual(FlowableDefer.java:35)

14:56:18
at io.reactivex.Flowable.subscribe(Flowable.java:14805)

14:56:18
at io.reactivex.Flowable.subscribe(Flowable.java:14752)

14:56:18
at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68) 

Как ни странно , сортировка объекта Ping в@Get call работает как веб-приложение и как лямбда.

Я загрузил пример проекта в Github: https://github.com/codependent/micronaut-aws-lambda-proxy

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Я отчаянно пытаюсь использовать Micronaut на работе, потому что он хорошо подходит для Lambda. ИМХО, однако, попробовал проект Github https://github.com/codependent/micronaut-aws-lambda-proxy, и MicronautLambdaContainerHandlerTest потерпел неудачу с кодом состояния 404. Так что с моей точки зрения,ошибка все еще присутствует в io.micronaut.aws:micronaut-function-aws-api-proxy:1.1.0.RC1

Сбой теста с этим:

com.codependent.micronaut.awslambda.web.MicronautLambdaContainerHandlerTest> должен вернуть правильно сформированное тело.io.micronaut.aws:micronaut-function-aws-api-proxy:1.1.0.RC1?Спасибо

0 голосов
/ 21 февраля 2019

Была ошибка в micronaut-function-aws-api-proxy lib, я сообщал об этом (https://github.com/micronaut-projects/micronaut-aws/issues/10) и был сразу исправлен в io.micronaut.aws:micronaut-function-aws-api-proxy:1.1.0.RC1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...