我正在使用spring boot + swagger 2来记录所有REST API。当我拥有以下项目结构时,我能够列出控制器的所有api。
如果我将swaggerconfig.java移动到配置包,那么我无法列出控制器的所有api。我得到了
这是我的 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();
}
}
我做错了什么
答案 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依赖项的版本不匹配