我正在尝试让Swagger UI与Sping Boot 1.2.1一起工作。我按照X1 E0 F1 X的说明操作,并在我的Spring配置中添加了X1 M0 N1 X。
当我转到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
作为URL,但这只是给出了“白标错误页”
更新:
我在Github上创建了一个测试项目来说明这个问题:https://github.com/wimdeblauwe/springboot-swagger-test
8条答案
按热度按时间5w9g7ksd1#
您的问题出在您的
SwaggerConfiguration
档案中。您需要移除@EnableWebMvc
,因为这会造成预设的Sping Boot 检视解析程式被预设的'SpringWebMvc'所覆写,而这个预设的解析程式会以不同的方式提供静态内容。默认情况下,Sping Boot 将提供以下任何目录中的静态内容:
包括webjar)的安全性。
我遇到了同样的问题,我在文档中找到了这个问题: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
。如果你想保留Sping Boot MVC特性,并且你只想添加额外的MVC配置(拦截器,格式化程序,视图控制器等),你可以添加你自己的@Bean
类型WebMvcConfigurerAdapter
,但是不带@EnableWebMvc
。我希望这能帮上忙。
brtdzjyr2#
我有swagger-ui v0.4(与spring v4.14和swagger-springmvc v0.9.4)工作正常,虽然我有一些类似的问题在第一。
我相信相关的东西是被覆盖的
configureDefaultServletHandling
。在我的主WebApplicationInitializer
上,我有:最后,我修复了UI的位置框显示“http://localhost:8080 ${pageContext.request.contextPath}/api-docs”的问题,方法是在我的依赖项中包含以下内容:
它提供了一些与JSP处理相关的东西,它包含在
spring-boot
的依赖项中,但通常不是provided
。希望能有所帮助。
wlsrxk513#
如果您在使用springfox swagger-ui 3.x或更高版本时遇到此问题..
试试下面的网址..它对我有用..
http://localhost:8080/swagger-ui /
有关完整的swagger文档编制步骤,请参阅:http://muralitechblog.com/swagger-rest-api-dcoumentation-for-spring-boot/
q35jwt9p4#
我有同样的问题,但这个链接为我工作:http://localhost:8080/sdoc.jsp
它会在swagger ui资源url框中预先填充以下内容:http://localhost:8080 ${页面上下文.请求.上下文路径}/api-docs
当我手动编辑它删除${pageContext.request.contextPath}并点击Explore时,它显示了我的API文档,我甚至可以成功地尝试我的端点。所以肯定是一个问题,但可能没有获得${pageContext.request/contextPath}。
查看javascript的源代码:URL:窗口.位置.源位置+“${页面上下文.请求.上下文路径}/api-docs”
在一个静态的 swagger 的UI html我有这一块是编码为:
发现URL:“./资源列表. json”
我希望这对你有帮助
xbp102n05#
正如上面的Tamas所指出的,问题在于使用@EnableWebMvc,它绕过了默认设置,跳过了Swagger需要的一些东西。对我来说,将其切换到@EnableSwagger2足以修复我的项目中的问题,它显示了类似的症状。
3htmauhk6#
我在我的项目中遇到过同样的问题。通过以下步骤解决了问题。
在pom.xml中添加了以下依赖项
在项目级别中添加了swagger2 ui配置,如下所示
然后就可以得到swagger用户界面文档http://localhost:8080/swagger-ui/
昂首阔步的API文档http://localhost:8080/v2/api-docs
qyswt5oh7#
我已经为Swagger做了单独的配置,我的问题是如果没有X1M0N1X,它就不能正常工作。
vpfxa7rd8#
我建议您使用@EnableSwagger2标记,并按照下面的步骤和代码进行操作:https://github.com/sanketsw/SpringBoot_REST_API
此外,我使用以下依赖关系,它工作得非常好: