Swagger Springfox配置问题

时间:2016-07-21 17:34:20

标签: java rest spring-mvc swagger springfox

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

我尝试添加Swagger来为现有REST服务生成文档。我试图将其添加为一个作为测试,以查看它的外观。我已经添加了springfoxui库,为spring context xml文件添加了swagger配置类和bean定义。我可以点击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,但这也没有用。我很难过。我已经完成了文档所说的内容,并且它无法正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分: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/");
    }

注意:如果您有弹簧启动应用程序,则不需要这样做。

  • 确保您使用的是最新的库版本(在撰写本文时为2.6.0)
  • 确认您可以在http(s)://your-host/context-path/v2/api-docs
  • 处查看招摇服务说明