【问题标题】:Swagger Springfox Configuration IssueSwagger Springfox 配置问题
【发布时间】:2016-11-25 10:24:43
【问题描述】:

我有一个使用 Spring MVC 来处理 REST 调用的应用程序,控制器是 REST 控制器并使用@RestController 进行注释,控制器及其方法使用@RequestMapping 进行注释。

我正在尝试添加 Swagger 来为现有 REST 服务生成文档。我正在尝试将其添加为一个测试,以查看它的外观。我添加了springfoxui 库,将swagger 配置类和bean 定义添加到spring context xml 文件中。我可以点击swagger-ui.html 链接,但它根本没有生成任何文档。由于文档稀少,我不知道自己做错了什么或配置错误,并且谷歌搜索该问题并没有产生任何有用的信息。

谁能提供一些关于我可能做错了什么的建议,或者提供一些比我目前找到的更好的文档?

我在我的 pom 文件中添加了 springfox-swagger2 和相关的 ui 条目,添加了这个: 到我的 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/");
    }

}

我尝试在我的 spring xml 中定义第二个类中的 bean,但这也不起作用。我难住了。我已经完成了文档所说的操作,但它不起作用。有什么想法吗?

【问题讨论】:

  • 请提供您的 web.xml 的内容,或者如果您不使用 web.xml,请提供您的 WebApplicationInitializer?

标签: java rest spring-mvc swagger springfox


【解决方案1】:

springfox 文档在here 可用。从您的帖子看来,您可能需要执行以下操作

    @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/");
    }

注意:如果您有 spring boot 应用程序,则不需要这样做。

  • 确保您使用的是最新的库版本(在撰写本文时为 2.6.0)
  • 验证你可以在http(s)://your-host/context-path/v2/api-docs看到swagger服务描述

【讨论】:

    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多