Spring Bootバージョン2.0.1.RELEASE
を Swagger と統合しようとしています。
これから ブログ投稿 Mavenの依存関係を2つ追加するだけで簡単になり、すべてが機能するようになりました。
そこで、次の依存関係をpomに追加しました。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
そしてSwaggerConfig
Beanを作成しました:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
return docket;
}
}
そして、プロパティファイルでは、動作させるためにこれらの3つのエントリが作成されました。
spring.application.name=cat-service
management.server.servlet.context-path=/cat-service
server.servlet.contextPath=/cat-service
しかし最後に、アクセスするとき
http://localhost:8080/cat-service/api/v2/api-docs
または次のUIページ
http://localhost:8080/cat-service/swagger-ui.html
page not found
エラーが表示されます。
swagger githubページのこの問題 および stackoverflowのこの質問 が見つかりましたが、404
エラーを変更できませんでした。
Springブートバージョンで動作させることができました2.0.4.RELEASE
および このブログ投稿 :
これらの依存関係を追加しました:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
そして、この構成ファイル:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SpringFoxConfig {
@Bean
public Docket apiDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
そしてそれは働いた。
Swagger UIには/swagger-ui.html#でアクセスできます
最初に、このようなSpringbootファイルと同じパッケージにSwaggerConfig.Javaファイルを追加します。
@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig extends WebMvcConfigurerAdapter {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
これを試してください{ http:// localhost:8080/spring-security-rest/api/swagger-ui.html }または{ http:// localhost:8080/spring-security- rest/swagger-ui.html }
動作しない場合は、application.propertiesのパスを変更してみましょう
これをファイルに追加します
server.servlet-path=/my-service
これを試してみてください http:// localhost:8080/my-service/swagger-ui.html (UI Docs)
http:// localhost:8080/loop-service/v2/api-docs (JSON Docs)
@EnableWebMvc
を削除した後、機能しました
変更することを忘れないでくださいserver.contextPath
からserver.servlet.contextPath
Spring Bootを2+にアップグレードする場合。