Spring bootでswagger2

どうも、最近ストレッチ用ゴムを買いましたざわです。

よくある記事なんですが、自分の環境では404でハマったので解決方法を残しておきます。

build.gradleの修正

以下を追加します。

dependencies {
(省略)
    compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.7.0'
    compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.7.0'
}

Swaggerのコンフィグ作成

適当な場所に以下のファイルを作成します

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket document() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("てすと!!")
                .description("テストですー")
                .version("1.0")
                .build();
    }
}

コントローラにアノテーション付与

@ApiModel(description = "テストコントローラ") //追加
@RestController
@RequestMapping(value = "/test")
public class TestController {

    @ApiOperation("200OKのテスト!") //追加
    @RequestMapping(value = "/create", method = RequestMethod.GET)
    ResponseEntity test() {
        return ResponseEntity.status(HttpStatus.OK).build();
    }
}

これ追加してあげる

上記だけだと404になりました。
以下のファイルを作成して解決しました。

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

おしまい

http://localhost:8080/swagger-ui.html
にアクセスしてみます。

できました

サーバサイドエンジニア。オムライスが好物

シェアする

  • このエントリーをはてなブックマークに追加

フォローする