当前位置 主页 > 网站技术 > 代码类 >

    springboot集成swagger过程解析

    栏目:代码类 时间:2020-01-03 12:09

    这篇文章主要介绍了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/**");
      }
    
    }