我试图让Swagger UI与Spring Boot 1.2.1一起使用。我按照https://github.com/martypitt/swagger-springmvc的说明操作,并在弹簧配置中添加了@EnableSwagger
。
当我转到http://localhost:8080/api-docs
时,我现在回来了JSON,但没有好的HTML。
我正在使用Maven并添加了对swagger-ui的依赖:
<dependency>
<groupId>org.ajar</groupId>
<artifactId>swagger-spring-mvc-ui</artifactId>
<version>0.4</version>
</dependency>
这是我完整的依赖列表:
<dependencies>
<dependency>
<groupId>com.mangofactory</groupId>
<artifactId>swagger-springmvc</artifactId>
<version>0.9.4</version>
</dependency>
<dependency>
<groupId>org.ajar</groupId>
<artifactId>swagger-spring-mvc-ui</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我还尝试http://localhost:8080/docs/index.html
作为网址,但这只是提供了“白标错误页面”
更新
我在Github上创建了一个测试项目来显示问题:https://github.com/wimdeblauwe/springboot-swagger-test
答案 0 :(得分:27)
您的问题出在您的SwaggerConfiguration
文件中。您需要取出@EnableWebMvc
,因为这会导致默认的“SpringWebMvc”覆盖默认的Spring Boot视图解析器,它以不同的方式提供静态内容。
默认情况下,Spring Boot将提供以下任何目录中的静态内容:
包括webjars。
我遇到了同样的问题,我在文档中找到了这个问题:http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-auto-configuration
如果您想完全控制Spring MVC,可以添加自己的
@Configuration
注释@EnableWebMvc
。如果您想保留Spring Boot MVC功能,并且只想添加其他MVC配置(拦截器,格式化程序,视图控制器等),您可以添加自己的@Bean
类型WebMvcConfigurerAdapter
,但没有@EnableWebMvc
。
我希望这会有所帮助。
答案 1 :(得分:2)
我有swagger-ui v0.4(使用spring v4.14&amp; swagger-springmvc v0.9.4)正常工作,尽管我最初遇到了类似的问题。看起来这个课就可以了。
@Configuration
@EnableSwagger
public class SwaggerConfig extends WebMvcConfigurerAdapter {
@Autowired
private SpringSwaggerConfig springSwaggerConfig;
@Bean
public SwaggerSpringMvcPlugin customImplementation() {
return new SwaggerSpringMvcPlugin(springSwaggerConfig).apiInfo(
apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfo(/* strings */);
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
我相信相关的事情是被覆盖的configureDefaultServletHandling
。在我的主WebApplicationInitializer
上,我有:
@Import(SwaggerConfig.class)
最后,我通过用户界面的位置框修复了问题,显示了&#34; http://localhost:8080 $ {pageContext.request.contextPath} / api-docs&#34;将其包含在我的依赖项中:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<version>8.0.15</version>-->
<scope>provided</scope>
</dependency>
这提供了与JSP处理相关的东西。它包含在spring-boot
的依赖项中,但它通常不是provided
。
希望有所帮助。
答案 2 :(得分:1)
我遇到同样的问题,但此链接适用于我:http://localhost:8080/sdoc.jsp
它预先填充了swagger ui资源网址框: http://localhost:8080 $ {pageContext.request.contextPath} / API-文档
当我手动编辑它时删除$ {pageContext.request.contextPath}并点击浏览它显示我的api文档,我甚至可以成功地尝试我的端点。所以肯定是一个问题,但可能没有拿起$ {pageContext.request / contextPath}。
查看javascript的源代码: url:window.location.origin +“$ {pageContext.request.contextPath} / api-docs”
关于静态swagger ui html我把这篇文章编码为:
discoveryUrl: “./资源list.json”
我希望这有点帮助
答案 3 :(得分:0)
如果您在springfox swagger-ui 3.x或更高版本中遇到此问题。
尝试下面的网址。它对我有用。
http://localhost:8080/swagger-ui /
有关完整的swagger文档步骤,请参阅: http://muralitechblog.com/swagger-rest-api-dcoumentation-for-spring-boot/
答案 4 :(得分:0)
正如上面 Tamas 所指出的,问题在于使用 @EnableWebMvc,它绕过了默认设置并跳过了 Swagger 需要的一些东西。对我来说,将其切换到 @EnableSwagger2 足以解决我的项目中出现类似症状的问题。
答案 5 :(得分:-1)
我已经为Swagger做了单独的配置,我的问题是没有@EnableAutoConfiguration
它无法正常工作。
@Configuration
@EnableSwagger2
@EnableAutoConfiguration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
答案 6 :(得分:-2)
我建议您使用@ EnableSwagger2标记并按照此处的步骤和代码进行操作:https://github.com/sanketsw/SpringBoot_REST_API
此外,我正在使用以下依赖,它完全正常:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>