0

我正在尝试编写一个 Micronaut AWS Groovy Lambda,它使 HTTPS 调用另一个服务。我遵循了 MN Docs 并使用以下方法创建了我的项目:

 mn create-function hello-world -lang groovy

这给了我一个骨架“hello-world”项目,其中包含我可以运行的功能测试。

然后我尝试修改 Groovy 函数 ( hello.world.HelloWorldFunction) 以注入 HTTP 客户端,以在我的函数中调用 API:

import static io.micronaut.http.HttpRequest.GET

@Field @Inject @Client("https://www.googleapis.com/books/v1") RxHttpClient httpClient

Maybe<String> helloWorld() {
    httpClient.retrieve(GET("/volumes?q=isbn:0747532699"))
              .firstElement()

}

完成此操作后,我现在在运行功能测试时遇到异常:

08:51:25.269 [nioEventLoopGroup-1-5] ERROR 
i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: 
Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for field [httpClient] of class: 
hello.world.HelloWorldFunction

Path Taken: HelloWorldFunction.httpClient

我几乎可以肯定做错了什么,但在如何弄清楚什么方面我有点茫然。因此感谢任何指点。

非常感谢,

埃德

4

1 回答 1

0

找到了这个问题的答案。这是1.0.0.M1. 虽然它已经在 master 中修复,但可以通过从源代码构建 Micronaut 并使用它来解决。

此外,我发现我返回的类型不受 Lambda 函数 ( Maybe<String>) 的支持。在从 master 构建 MN 并将其更改为支持的返回类型后,现在一切正常。

于 2018-06-13T07:57:22.863 回答