Я использую дженерики в моем контроллере. Например, из некоторых конечных точек я возвращаю Response<News>
и Response<Tag>
.
Ну, Swagger автоматически генерирует эту часть yaml
responses:
200:
description: default response
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseNews'
и
responses:
200:
description: default response
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseTags'
Это моя сущность Response в Java.
public class Response<T> {
private List<T> data;
private Boolean moreDataExists;
}
Так Swagger генерирует компоненты.
ResponseNews:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/News'
moreDataExists:
type: boolean
ResponseTags:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Tags'
moreDataExists:
type: boolean
Ну, это почти дублированный код. И я хочу избежать этого, и использовать в описании моих конечных точек только Ответ , и ясно показать своим пользователям, что я использую дженерики.
Что-то вроде этого:
responses:
200:
description: default response
content:
application/json:
schema:
$ref: '#/components/schemas/Response'
contains:
$ref: '#/components/schemas/News'
Я готов сделать это даже без Swagger, просто вручную. Есть ли способ сделать это, возможно, используя наследование или полиморфизм?