如何启用Swagger UI? Tomcat,SpringMVC,REST

时间:2014-11-25 17:14:51

标签: java spring tomcat swagger swagger-ui

我的配置如下:

的pom.xml

<dependencies>
        <!-- Swagger -->
        <dependency>
            <groupId>com.mangofactory</groupId>
            <artifactId>swagger-springmvc</artifactId>
            <version>0.9.1</version>
        </dependency>

        <!-- Swagger WebJar -->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>swagger-ui</artifactId>
            <version>2.0.24</version>
        </dependency>
</dependencies>

根context.xml中

<mvc:annotation-driven/>
<beans:bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />

我将我的应用程序部署到Tomcat 8.0中。我能够在URI上看到Swagger JSON数据:

http://localhost:8080/myapp/api-docs

但我无法运行Swagger UI。我还应该在项目中运行Swagger UI吗?

2 个答案:

答案 0 :(得分:5)

诀窍是你的swagger-ui maven依赖是一个webjar。您需要配置从Web服务器到Webjar的路径。

我使用了当前的maven依赖:

<dependency>
   <groupId>org.webjars</groupId>
   <artifactId>swagger-ui</artifactId>
   <version>2.1.3</version>
</dependency>

并使用注释进行配置:

@Configuration
@EnableWebMvc
public class RestConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/2.1.3/");
    }
// [...]
}

在弹簧配置中使用xml也可以这样做:

<mvc:resources mapping="/swagger-ui/**" location="classpath:/META-INF/resources/webjars/swagger-ui/2.1.3/"/>

另见:http://www.jamesward.com/2012/04/30/webjars-in-spring-mvc

答案 1 :(得分:1)

我通过向

添加swagger-ui资源解决了我的问题
src\main\webapp\docs

我还添加了

<mvc:default-servlet-handler/>

到pom.xml

现在我可以访问下面的swagger UI:

http://localhost:8080/myapp/docs/