Проблема с конфигурацией Swagger Springfox

У меня есть приложение, которое использует Spring MVC для обработки вызовов REST, контроллеры являются контроллерами REST и аннотированы @RestController, а контроллер и его методы аннотированы @RequestMapping.

Я пытаюсь добавить Swagger для создания документации для существующих служб REST. Я пытаюсь добавить его для одного в качестве теста, чтобы посмотреть, как это выглядит. Я добавил библиотеки springfox и ui, добавил классы конфигурации swagger и определения bean-компонентов в файл spring context xml. Я могу нажать на ссылку swagger-ui.html, но она вообще не создает никакой документации. Из-за скудности документации я понятия не имею, что я делаю неправильно или неправильно настроен, а поиск в Google по этой проблеме не дает ничего полезного.

Может ли кто-нибудь предложить несколько советов о том, что я мог сделать неправильно, или, альтернативно, лучшую документацию, чем я нашел до сих пор?

Я добавил springfox-swagger2 и связанную запись ui в мой файл pom, добавил это: в мой файл spring вместе с двумя новыми определениями bean для этих классов:

 @Configuration
@EnableSwagger2
public class ApplicationSwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

}

@EnableWebMvc
public class SwaggerConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

Я пробовал определить beans во втором классе в моем весеннем xml, но это тоже не сработало. Я в тупике. Я сделал то, что сказано в документации, и это не работает. Любые идеи?


person Alex    schedule 21.07.2016    source источник
comment
Предоставьте содержимое вашего web.xml или, если вы не используете web.xml, укажите свой WebApplicationInitializer?   -  person marians27    schedule 02.09.2016


Ответы (1)


Документация springfox доступна здесь. Из вашего сообщения видно, что вам может потребоваться сделать следующее

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {

            registry.addRedirectViewController("/documentation/v2/api-docs", "/v2/api-docs?group=restful-api");
            registry.addRedirectViewController("/documentation/swagger-resources/configuration/ui","/swagger-resources/configuration/ui");
            registry.addRedirectViewController("/documentation/swagger-resources/configuration/security","/swagger-resources/configuration/security");
            registry.addRedirectViewController("/documentation/swagger-resources", "/swagger-resources");
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
             registry
                   .addResourceHandler("/documentation/swagger-ui.html**")
                   .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
            registry
                   .addResourceHandler("/documentation/webjars/**")
                   .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

ПРИМЕЧАНИЕ: это не требуется, если у вас есть приложение для весенней загрузки.

  • Убедитесь, что вы используете последнюю версию библиотеки (на момент написания это 2.6.0)
  • Убедитесь, что вы видите описание службы swagger на http(s)://your-host/context-path/v2/api-docs
person Dilip Krishnan    schedule 08.10.2016