Я довольно новичок в чванстве и некоторое время борюсь.
Я использую плагин magen swagger codegen (groupId: io.swagger.codegen.v3, artifactId: swagger-codegen-maven-plugin, версия: 3.0.0):
<language>java</language>
<library>jersey1</library>
<java8>true</java8>
<withXml>true</withXml>
<configOptions>
<dateLibrary>java8</dateLibrary>
</configOptions>
У меня есть определение OpenAPI (которое я предполагаю, 3.0) с путями доступа к API-интерфейсам json и xml (пара - только json, некоторые - обахотя я прилагаю свои усилия к XML, если оба они доступны - причина этого была в именах полей, таких как "@XX_YY"
, которые я не мог заставить работать разумно).
Это сегмент в /определения
"UserExport": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"xml": {
"name": "USER"
},
"$ref": "#/definitions/User"
},
"xml":{
"name": "USER"
}
}
},
"xml": {
"name": "USERS"
}
}
Соответствующий сегмент XML:
<?xml version="1.0" encoding="UTF-8"?>
<USERS>
<USER ....
Сгенерированная модель UserExport
содержит ссылку на список пользователей следующим образом:
@JsonProperty("users")
@XmlElement(name="null")
private List<User> users = null;
Unmarshalling(т.е. чтение UserObject
pojo из сервиса) не работает с этим.Если я изменю name="null"
на name="USER"
, это будет выглядеть хорошо.
Теперь у меня следующие вопросы:
- Это действительная спецификация OpenAPI относительно отсканированного XML, который я показал?
- Если нет, каково будет правильное определение для этого?Использовать ссылку в атрибуте
type
? - Если она действительна (в это я верю), как я могу заставить ее работать?Я открыт для использования других библиотек.
У меня есть набор инструментов для генерации кода, запущенного в отладчике, и я также открыт для изменения проекта swagger-codegen-generators.
Спасибо за помощь, Фрэнк