Я работаю над документированием API, созданного с помощью RESTeasy + Jackson в Java, используя Swagger / OpenAPI (версия 1.5.18 - я добавил в v3 OAS 2.0.1, чтобы попробовать oneOf / anyOf). Одна из конечных точек принимает String
в качестве тела запроса, которое затем преобразуется в один из нескольких классов. Документация должна отображать каждую из этих моделей, чтобы пользователи могли их видеть. Модели определены в другом проекте. Есть ли способ сделать это с помощью аннотаций? Самое близкое, что я нашел, - это добавление @RequestBody(content=@Content(schema=@Schema(oneOf= {class1.class, class2.class})))
, но я не смог заставить его добавить модель, использующую это. Я также попытался добавить фиктивный класс с @ApiModel(subTypes={class1.class, class2.class}
. Я не хочу добавлять дополнительные конечные точки для каждого типа объекта из-за удобства сопровождения кода.
Мой вопрос: возможно ли добавить модели с помощью аннотаций, оставляя тип ввода как String
?
Вот соответствующий код:
@POST
@Path("/{filetype}/new")
@Consumes("application/json")
public Response writeFile(
@ApiParam(required=true, allowableValues = "class1, class2") @PathParam("filetype") String filetype,
@RequestBody(content=@Content(schema=@Schema(oneOf= {class1.class, class2.class}))) String inputFile
) {
return validateFileAndSaveToServer(filetype, inputFile);
}