web-dev-qa-db-ja.com

Swagger UIを有効にする方法は? Tomcat、SpringMVC、REST

私の構成は次のとおりです。

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>

root-context.xml

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

アプリケーションをTomcat8.0にデプロイします。 URIでSwaggerJSONデータを確認できます。

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

しかし、SwaggerUIを実行できません。プロジェクトでSwaggerUIを実行するには、さらに何をする必要がありますか?

7
Dariusz Mydlarz

Swagger-uiリソースをに追加することで問題を解決しました

src\main\webapp\docs

私も追加しました

<mvc:default-servlet-handler/>

Pom.xmlへ

これで、次の場所でSwaggerUIにアクセスできます。

http://localhost:8080/myapp/docs/
1
Dariusz Mydlarz

秘訣は、swagger-uimavenの依存関係が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/");
    }
// [...]
}

Spring構成の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

5
leo