Использование Javadocs для создания документа Swagger

Я хочу создать документацию Swagger для существующего набора RESTful API. У меня есть следующее требование:

  1. Создайте документ Swagger в автономном режиме (я использовал http://kongchen.github.io/swagger-maven-plugin/ ). Этот плагин помогает мне генерировать документацию Swagger во время компиляции.
  2. Чтение существующей документации Javadoc, чтобы ее можно было использовать в документации Swagger.

До сих пор, используя вышеуказанный плагин, я смог достичь точки № 1. Итак, для существующего метода REST:

 /**
 * <p>
 * Gets the {@link DisplayPreferenceModel} with the name as provided in the parameter. The preference with the given name defined at the tenant or master level is returned.
 * This API gives us the preference if it is eligible for unauthorized access If it is not eligible it throws an Exception saying Authorization required.
 * </p>
 * @param preferenceName
 *            - The name of the preference.
 * @return {@link DisplayPreferenceModel}
 */
@RequestMapping(method = RequestMethod.GET, value = "/preferences/{preferenceName}")
@ApiOperation(value = "This API gives us the preference if it is eligible for unauthorized access If it is not eligible it throws an Exception saying Authorization required", 
                        notes = "No Notes please", response = DisplayPreferenceModel.class)
@ApiResponses(value = { 
                        @ApiResponse(code = 400, message = "Invalid preferenceName supplied"), 
                        @ApiResponse(code = 404, message = "Display Preference Not Found")
                      }
            )
public DisplayPreferenceModel getDisplayPreference( @PathVariable("preferenceName") final String preferenceName ) {
}

Мне удалось создать документацию Swagger. Благодаря использованию @ApiOperation и @ApiResponses моя документация выглядит великолепно.

Однако мой вопрос: могу ли я использовать Javadocs вместо того, чтобы заставлять каждого разработчика создавать @ApiOperation и @ApiResponses, чтобы сэкономить время моей команде?


person Raj    schedule 01.09.2015    source источник
comment
как сгенерировать эти документы @raj? мой проект основан на maven, я добавил нотацию Api, нотацию ApiResonses, но как я могу сгенерировать документы, какую-либо помощь?   -  person Irfan Nasim    schedule 12.10.2015
comment
Я использовал «swagger-springmvc» v1.0.2. Затем я создал класс CustomSwaggerConfig с параметрами «@Configuration» и «@EnableSwagger». И в applicationContext.xml я сослался на CustomSwaggerConfig.   -  person Raj    schedule 13.10.2015
comment
у меня нет весны, я просто с мавеном, стойками   -  person Irfan Nasim    schedule 14.10.2015
comment
Извини, приятель, ничем не могу тебе помочь. В нашем проекте используются библиотеки Spring, поэтому мы используем 'swagger-springmvc'   -  person Raj    schedule 14.10.2015


Ответы (2)


Вы можете сгенерировать swagger-ui из Javadoc с помощью Enunciate, в котором есть модуль Swagger. Во-первых, вам нужно добавить плагин maven в ваш файл pom; например

<plugin>
        <groupId>com.webcohesion.enunciate</groupId>
        <artifactId>enunciate-maven-plugin</artifactId>
        <version>${enunciate.version}</version>
        <executions>
           <execution>
                  <goals>
                    <goal>docs</goal>
                  </goals>
                  <configuration>
                    <configFile>enunciate.xml</configFile>
                    <docsDir>${project.build.directory}</docsDir>
                  </configuration>
           </execution>
        </executions>
</plugin>

где 'enunciate.xml' содержит специфические для вашего проекта конфигурации и выглядит следующим образом:

<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="http://enunciate.webcohesion.com/schemas/enunciate-2.0.0-M.3.xsd">

    <application root="/rest" />

</enunciate>

Затем запустите mvn compile, и он сгенерирует файлы документации Swagger из вашего Javadoc.

person Egemen    schedule 12.11.2015
comment
Это работает фантастически даже без указания какой-либо конфигурации. Просто примечание: когда вы используете цель «документы», она генерируется на mvn compile, а не на mvn package. mvn package предназначен для цели «собрать», которая отличается. Также убедитесь, что вы прочитали, какие модули вам нужны, иначе он сгенерирует массу вещей, которые вам не нужны, как клиенты для других языков. - person Alex Beardsley; 16.01.2016
comment
Можно ли это совместить с swagger.json от Springfox? - person Mahatma_Fatal_Error; 29.03.2018

Кажется, есть доклет javadoc для создания списка ресурсов JSON Swagger: https://github.com/teamcarma/swagger-jaxrs-doclet

person dsavickas    schedule 28.09.2015