Описание проблемы. У меня есть проект, в котором я создаю RESTful api с помощью micronaut. Модели, возвращаемые в теле ответа, генерируются из открытой спецификации API (с использованием плагина gradle).
Однако по какой-то причине micronaut всегда возвращает любой объект модели как пустой объект json {}, даже если он должен быть заполненным объектом.
Ссылка на репозиторий https://gitlab.com/connorbutch/open-api-micronaut-quarkus
Примеры вывода
Ожидал:
[
{
"id": 123
"name": "Scruffy"
"tag": "Chuck's pup"
}
]
Фактически: [{}]
Как воспроизвести
- Клонировать код локально (git clone ....)
- Перейдите в корневой каталог (cd .......)
- Запустите сборку gradle (чистая сборка gradle)
- Перейдите к чтению-понимания-сервер-имп (cd-чтение-понимание-сервер-имп)
- Запустите docker build (либо docker build. -T ...., либо просто запустите ./docker-build.sh) ‹- этот шаг займет немного времени и памяти, поэтому потенциально закройте другие приложения
- Запустите только что созданный образ докера (docker run -p 8080: 8080 read-compgotiion-server-impl)
- Сделайте запрос на получение на сервер (http: // localhost: 8080 / pets? Limit = 4)
У меня есть идеи, которые меня интересовали:
- может ли это быть проблемой (gradle) области? Должен ли я использовать api вместо реализации для аннотации @Introspected (просто чтобы посмотреть, работает ли она)?
- могло ли это быть проблемой с моделью, созданной в другом модуле / банке? Должен ли я перенести поколение в тот же проект (просто чтобы посмотреть, работает ли оно)?
- Может ли это быть проблемой с разными версиями микронавтов в разных модулях?
- Могу ли я каким-то образом ввести (или иначе) получить ссылку на сериализатор bean-компонентов для дальнейшей отладки?
Другие исследования
- Я изменил одну из конечных точек, чтобы она возвращала объектную модель из того же модуля (просто фиктивный ответ), и она была возвращена в правильном формате .... так что это может быть либо проблема версии, либо проблема сборки (поскольку она находится в другой модуль)
- Я модифицировал включенный модуль, чтобы использовать ту же версию micronaut (на данный момент 1.3.0, в будущем хотел бы перейти на 2.x.x), но все еще не сериализуется правильно
- Я создал копию класса, который пытался сериализовать в теле ответа в этот модуль, и это сработало (см. NotARealPet.java). Теперь вопрос в том, могу ли я настроить это для работы или мне просто (временно) изменить api для создания в каталоге сборки этого проекта?