gpt4 book ai didi

gradle - 如何配置 micronaut 序列化以使用开放 api 生成的模型?

转载 作者:行者123 更新时间:2023-12-03 05:21:19 26 4
gpt4 key购买 nike

问题描述
我有一个项目,我正在用 micronaut 构建一个 RESTful api。响应正文中返回的模型是从开放的 api 规范(使用 gradle 插件)生成的。
但是,由于某种原因,它 micronaut 总是将任何模型对象作为空的 json 对象 {} 返回,即使它应该是一个填充对象。
资源库链接
https://gitlab.com/connorbutch/open-api-micronaut-quarkus
输出示例
预期的:

[
{
"id": 123
"name": "Scruffy"
"tag": "Chuck's pup"

}
]
实际: [{}] 如何重现
  • 本地克隆代码 (git clone ....)
  • 导航到根目录 (cd .......)
  • 运行 gradle build (gradle clean build)
  • 导航到阅读理解服务器-impl (cd reading-comprehension-server-impl)
  • 运行 docker build(docker build . -t .... 或只运行 ./docker-build.sh)<-- 这一步会占用一点时间和内存,因此可能会关闭其他应用程序
  • 运行刚刚构建的 docker 镜像(docker run -p 8080:8080 reading-comprehension-server-impl)
  • 向服务器发出 get 请求 (http://localhost:8080/pets?limit=4)

  • 我的想法
    我很好奇的一些事情包括:
  • 这可能是(gradle)范围问题吗?我应该使用 api 而不是实现 @Introspected 注释(只是为了看看它是否有效)?
  • 这可能是在另一个模块/jar 中生成的模型的问题吗?我应该将这一代转移到同一个项目(只是为了看看它是否有效)?
  • 这可能是跨模块的不同 micronaut 版本的问题吗?
  • 是否有某种方式可以注入(inject)(或以其他方式)获取对 bean 序列化程序的引用以进一步调试?

  • 其他探索
  • 我修改了其中一个端点以从同一模块返回一个对象模型(只是一个虚拟响应),并且以正确的格式返回......所以它可能是版本问题或构建问题(因为它在另一个模块)
  • 我修改了包含的模块以使用相同的 micronaut 版本(现在是 1.3.0,以后想升级到 2.x.x),但仍然不能正确序列化
  • 我创建了一个试图在响应正文中序列化到这个模块中的类的副本,并且它起作用了(参见 NotARealPet.java)。现在的问题是,我可以将其配置为工作,还是应该(暂时)更改要在该项目的构建目录中生成的 api?
  • 最佳答案

    我找到了答案。即使使用@Introspected 编译了一个类,graal vm(native-image cli)也不会查看这些类。为了包含这些,我最终包含一个类,指定内省(introspection)这些类 @Introspected(classes = { Pet.class, Error.class})
    如果有人感兴趣,我会发布一个带有示例的 gitlab 链接

    关于gradle - 如何配置 micronaut 序列化以使用开放 api 生成的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63368209/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com