Maven 配置文件可用于选择运行时(在此示例中使用 netty)和主类:
<profiles>
<profile>
<id>local</id>
<properties>
<exec.mainClass>micronaut.Application</exec.mainClass>
<micronaut.runtime>netty</micronaut.runtime>
</properties>
<dependencies>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-http-server-netty</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
</profiles>
使用带有调用函数的 Post 方法的控制器创建主类
package micronaut;
import io.micronaut.http.annotation.Body;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Post;
import io.micronaut.runtime.Micronaut;
import micronaut.test.Book;
import micronaut.test.BookRequestHandler;
import micronaut.test.BookSaved;
public class Application {
public static void main(String[] args) {
Micronaut.run(Application.class, args);
}
@Controller()
public static class LambdaController {
private static final BookRequestHandler handler = new BookRequestHandler();
@Post
public BookSaved execute(@Body Book book) {
return handler.execute(book);
}
}
}
并运行
mvnw mn:run -Plocal
现在你可以使用
curl --location --request POST 'http://localhost:8080/' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "Test"}'
返回
{
"name": "Test",
"isbn": "2a163c3d-4bd6-444d-914d-58daf3e649b8"
}
这有点 hacky,要测试您的功能,您可以查看micronaut-test/src/test/java/micronaut/test/BookRequestHandlerTest.java类或查看测试 Lambda 处理程序官方文档。
注意:对于使用mn create-app -f aws-lambda ... 创建的应用程序,不需要 pom.xml 中的<exec.mainClass>,而是生成 Application.java。