天天看點

Webflux內建Swagger3

Swagger 2.9.2版本不支援Webflux

然後查閱資料Webflux需要使用Swagger3.0

我找了好久資料

好多配置都沒有成功

最後一不小心成功了,發現其實并不需要多少配置

我們直接上配置

gradle

compile group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'
           

maven

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
           

直接導入就能使用了

然後應用主類增加注解@EnableOpenApi,删除之前版本的SwaggerConfig.java,啟動項目,通路位址:http://localhost:8200/swagger-ui/index.html,注意2.x版本中通路的位址的為http://localhost:8200/swagger-ui.html

2.配置資源目錄

注意:這個類和swagger沒有關系,是配置跨域的

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    //這個和swagger沒有關系,是配置跨域的
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST","DELETE","OPTIONS")
                .allowCredentials(false).maxAge(3600);
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.
                addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
                .resourceChain(false);
        super.addResourceHandlers(registry);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/swagger-ui/")
                .setViewName("forward:/swagger-ui/index.html");
    }
}
           

預設是這樣的,不影響你使用

Webflux內建Swagger3

預設是以上界面,當然之前的配置還可以繼續配置,隻不過是可選配置,那我們繼續加上

@Configuration
public class SwaggerConfiguration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.aiprose.mbp.controller"))
//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot mybatis plus架構demo")
                .description("springboot mybatis plus架構demo")
                .contact(new Contact("nelson", "https://www.aiprose.com/", "[email protected]"))
                .version("1.0")
                .build();
    }
}
           
Webflux內建Swagger3
原文位址

https://www.aiprose.com/blog/127