Аннотации Swagger не создают определение для родительского интерфейсаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Аннотации Swagger не создают определение для родительского интерфейса

Сообщение Anonymous »

Я использую io.swagger.core.v3:swagger-annotations:2.2.21. У меня есть объект ответа, который содержит свойство, которое представляет собой интерфейс с несколькими реализациями. Я думаю, что у меня все аннотировано правильно, но полученный JSON не проходит проверку.
У меня:

Код: Выделить всё

public class DonationFormResponse {
...
@Schema(
description = "The form layout.",
oneOf = { ClassicFormLayout.class, AdaptiveFormLayout.class }
)
private FormLayout formLayout;
...
}

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "layout_type")
@JsonSubTypes({
@JsonSubTypes.Type(value = ClassicFormLayout.class),
@JsonSubTypes.Type(value = AdaptiveFormLayout.class)
})
@Schema(description = "The form layout.")
public interface FormLayout {
...
}

@Schema(allOf = FormLayout.class)
public class AdaptiveFormLayout implements FormLayout {
...
}

@Schema(allOf = FormLayout.class)
public class ClassicFormLayout implements FormLayout {
...
}
Сгенерированный JSON содержит:

Код: Выделить всё

"DonationFormResponse" : {
...
"form_layout" : {
"oneOf" : [
{
"$ref" : "#/components/schemas/AdaptiveFormLayout"
},
{
"$ref" : "#/components/schemas/ClassicFormLayout"
}
]
},
...
}
...
"AdaptiveFormLayout" : {
"type" : "object",
"allOf" : [
{
"$ref" : "#/components/schemas/FormLayout"
},
{
"type" : "object",
"properties" : {
"cards" : {
"type" : "array",
"items" : {
"$ref" : "#/components/schemas/Card"
}
}
}
}
]
},
...
"ClassicFormLayout" : {
"type" : "object",
"allOf" : [
{
"$ref" : "#/components/schemas/FormLayout"
}
]
},
Но определение FormLayout не создано, поэтому «$ref» : «#/comComponents/schemas/FormLayout» приводит к ошибке проверки.
п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... -interface
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»