Swagger-ui.html没有显示api列表

时间:2018-01-22 14:46:06

标签: java spring-boot swagger

我正在使用spring boot + swagger 2来记录所有REST API。当我拥有以下项目结构时,我能够列出控制器的所有api。

enter image description here

如果我将swaggerconfig.java移动到配置包,那么我无法列出控制器的所有api。我得到了 enter image description here

这是我的 SwaggerConfig.java

@Configuration
@EnableAutoConfiguration
//@ComponentScan(basePackages="com.javainuse.swaggertest")
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket postsApi() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("public-api")
                .apiInfo(apiInfo()).select().paths(postPaths()).build();
    }

    private Predicate<String> postPaths() {
        return or(regex("/api/posts.*"), regex("/api/javainuse.*"));
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("JavaInUse API")
                .description("JavaInUse API reference for developers")
                .termsOfServiceUrl("http://javainuse.com")
                .contact("javainuse@gmail.com").license("JavaInUse License")
                .licenseUrl("javainuse@gmail.com").version("1.0").build();
    }

}

我做错了什么

6 个答案:

答案 0 :(得分:0)

对我有用的是:

left:;

通知路径不是特定的,它是任意的。

答案 1 :(得分:0)

<a onclick="playVideoFunction()">Play video</a>
<a onclick="stopVideoFunction()">Stop video</a>

<iframe id="videoIframe" width="840" height="473" 
src="https://www.youtube.com/embed/dZ0fwJojhrs?feature=oembed" 
frameborder="0" allowfullscreen></iframe>

<script type="text/javascript">
function playVideoFunction() { 
  document.getElementById("videoIframe").src += "&autoplay=1";}

function stopVideoFunction() { 
  var ysrc = document.getElementById("videoIframe").src;    
  var newsrc = ysrc.replace("&autoplay=1", "");
  document.getElementById("videoIframe").src = newsrc;
}
</script>

答案 2 :(得分:0)

我解决了这个问题。问题是浏览器缓存。我刚清除了所有缓存,然后我能够获得所有api列表中的swagger-ui.html。

答案 3 :(得分:0)

尽管OP问题已经解决,但我偶然发现了该线程,并且解决方案有所不同。在这里,其他人应该找到自己的位置:

我遇到了同样的问题,但是使用了swagger-codegen-maven-plugin(v3) 该API在api.yml规范文件中定义,我使用插件生成接口和模型。

它还可以选择生成一个控制器,在这种情况下,它会显示在UI中。但是,当我将控制器配置为忽略/跳过以生成时,仅实现自己的控制器就没有显示。

问题出在包装上。该插件还会自动生成SwaggerDocumentationConfig类,该类包括已配置的API包中的所有控制器。我自己的控制器必须放在完全相同的程序包中。

代码片段以澄清:

在我的pom.xml中,我已使用以下命令配置了插件:

['Moscow', 'Berlin', 'France']

自动生成的SwaggerDocumentationConfig类包含:

<apiPackage>a.b.c.spec.api</apiPackage>

我的控制器位于软件包 @Bean public Docket customImplementation() { return (new Docket(DocumentationType.SWAGGER_2)).select() .apis(RequestHandlerSelectors .basePackage("a.b.c.spec.api")) .build().apiInfo(this.apiInfo()); } 中,因此我不得不更改apiPackage属性以使其对齐,问题得以解决。

答案 4 :(得分:0)

这解决了我的问题。

在摘要中添加.pathMapping(“ /”)

void Read(R* msg, void* tag)

答案 5 :(得分:0)

我正在研究基于Maven的Java Spring Boot项目。 就我而言,这是pom.xml中的swagger和swagger-ui依赖项的版本不匹配