2015-07-30 5 views
3

Как я могу использовать свою собственную аннотацию для создания страницы swagger ui. Например я определил аннотацию и использовать его:Как я могу использовать собственную аннотацию для Swagger?

@PUT 
    @MyOwnAnnotationForAdditionalPropInSwagger(value = "Some text") 
    @Path("/{carId}") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    @ApiOperation(
     value = "Updates car info" 
    ) 
    public Response patchItem(@ApiParam(value = "Fields to update") Car item) { 
      /*some code*/ 
    } 

После этого, вероятно, следует расширить некоторый класс от swagger-core и указать для сканирования моей аннотации (@MyOwnAnnotationForAdditionalPropInSwagger).

В результате я хочу видеть дополнительную колонку в swagger ui с моим текстом.

Как я могу это реализовать? Какой класс мне нужно расширить?

+0

Вы немного отстаете отсюда, потому что вам не хватает идеи за Swagger. Это спецификация, и ее распространение не так просто. У нас есть способ добавить расширения для поставщиков, которые бы обеспечили поддержку в экосистемных инструментах, но случайное распространение это просто не то, что мы поддерживаем. – Ron

ответ

1

Swagger 2.0 поддерживает пользовательские поля, в 2013 году был запрошен Pull Request (https://github.com/swagger-api/swagger-node/pull/47).

По-видимому, легко добавить пользовательские поля, поскольку они не присутствуют в спецификации Swagger 2.0, Swagger-UI не будет отображать их по умолчанию.

Для этого вам нужно будет изменить пару вещей.

  1. Реализовать нужную аннотацию в вашей реализации парсера (то есть.swagger-core или swagger-php), если она не существует.
  2. Клонировать и изменять swagger-ui для отображения пользовательского поля, если хотите.

Обратите внимание, что при этом вы фактически нарушите схему jag swagger (https://github.com/swagger-api/swagger-spec/blob/master/schemas/v2.0/schema.json), и любые сторонние валидаторы, которые вы можете использовать, потерпят неудачу.

+0

Как я могу реализовать свою аннотацию в parser 'swagger-core'? – Alexiuscrow

+0

Предположим, что вы используете 'java', вам нужно будет расширить библиотеку' swagger-core', которую вы можете найти здесь: https://github.com/swagger-api/swagger-core. Специфика, которую вы можете найти, прочитав документацию: https://github.com/swagger-api/swagger-core/wiki. – Mark

+0

Мы говорим здесь о полном цикле разработки. Это выходит за рамки вопроса, поскольку ответом будет сама реализация. – Mark

Смежные вопросы