zoukankan      html  css  js  c++  java
  • springboot集成swagger

    springboot集成swagger

    1、pom.xml中引入:

        <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>

    2、配置类:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
        @Bean
        public Docket swaggerSpringMvcPlugin() {
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    //加了ApiOperation注解的类,才生成接口文档
                    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                    .build();
        }
    
    }

    3、controller相应的注解:@ApiOperation

      @ApiOperation(value = "用户登录",notes = "")
        @PostMapping("/loginOn")
        public ResponseMessage loginOn(@RequestBody @Valid UserReq userReq){
            ResponseMessage responseMessage = userServiceImp.loginOn(userReq);
            return responseMessage;
        }

    最后本地默认访问:http://localhost:8080/swagger-ui.html

    既可以看到相关接口效果图:

     访问页失败的可能原因:

    1》》访问方法本来就是404错误:在sprigboot中有个重要的概念叫做:约定优于配置:

    springboot启动的时候如果没有指定扫描的包路径时,默认会去加载其当前包及子包下的组件,这里需要注意

     如果把启动类放入service包下,页面就会访问不到:

     2》》SwaggerConfig 类的写法有问题:Docket方法挺多的,这里需要注意:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
        @Bean
        public Docket swaggerSpringMvcPlugin() {
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    //加了ApiOperation注解的类,才生成接口文档
                    .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                    .build();
        }
    
    }

    3》》配置拦截器时是否进行了拦截:

    在实现WebMvcConfigurer接口时,我们再配置拦截器时,需要对相应的请求进行过滤放行,比如静态资源,登录请求等

    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        /**
         * 配置拦截器
         * @param registry
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new RequestInterceptor()).addPathPatterns("/**").excludePathPatterns("/user/login")
                    //排除swagger
            .excludePathPatterns("/swagger-resources/**", "/webjars/**",
                    "/v2/**", "/swagger-ui.html/**");
        }
    
    }

    有的代码是通过重写WebMvcConfigurer的addResourceHandlers方法:

    /**
         * 添加静态资源--过滤swagger-api (开源的在线API文档)
         * @param registry
         *//*
        @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/");
    
            registry.addResourceHandler("/swagger-resources/**")
                    .addResourceLocations("classpath:/META-INF/resources/swagger-resources/");
    
            registry.addResourceHandler("/swagger/**")
                    .addResourceLocations("classpath:/META-INF/resources/swagger*");
    
            registry.addResourceHandler("/v2/api-docs/**")
                    .addResourceLocations("classpath:/META-INF/resources/v2/api-docs/");
    
        }*
  • 相关阅读:
    正则表达式match方法和search方法
    正则表达式(基础篇1)
    动画
    重绘和重排(回流)
    数组常用的10个方法
    css3只需一招,将网站变成灰色的
    Python-类的几种调用方法
    Codeforces Global Round 8 C. Even Picture(构造)
    Codeforces Global Round 8 D. AND, OR and square sum(位运算)
    Codeforces Round #650 (Div. 3) C. Social Distance
  • 原文地址:https://www.cnblogs.com/tdyang/p/12142064.html
Copyright © 2011-2022 走看看