Swagger

本文介绍了如何在SpringBoot项目中通过knife4j封装Swagger,包括添加Maven依赖、配置WebMvcConfiguration以生成接口文档,以及使用Swagger注解来详细描述接口。
摘要由CSDN通过智能技术生成

Swagger

knife4j对swagger进行了封装,在访问在线接口文档YApi时在pom中导入knife4j的依赖即可。

Swagger可以在线查看你写的ajax请求。请求路径,请求参数等。还可以查看ajax请求后的响应数据。

swagger用法

1.导入knife4j的maven坐标(依赖)。

 <!--knife4j读取yapi接口文档-->
 <dependency>
     <groupId>com.github.xiaoymin</groupId>
     <artifactId>knife4j-spring-boot-starter</artifactId>
     <version>3.0.2</version>
 </dependency>

2.在配置类中加入knife4j的相关配置。

Config层(WebMvcConfiguration.class )----一般放在@Configuration配置类WebMvcConfiguration.class 中。

 /**
  * 通过knife4j生成接口文档
  * @return
  */
 @Bean
 public Docket docket() {
     ApiInfo apiInfo = new ApiInfoBuilder()
             .title("项目接口文档")
             .version("2.0")
             .description("项目接口文档")
             .build();
     Docket docket = new Docket(DocumentationType.SWAGGER_2)
             .apiInfo(apiInfo)
             .select()
             .apis(RequestHandlerSelectors.basePackage("controller包的路径"))
             .paths(PathSelectors.any())
             .build();
     return docket;
 }

3.设置静态资源映射,否则接口文档页面无法访问。

Config层(WebMvcConfiguration.class )----一般放在@Configuration配置类WebMvcConfiguration.class 中。

 /**
  * 设置静态资源映射
  * @param registry
  */
 protected void addResourceHandlers(ResourceHandlerRegistry registry) {
     registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
     registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
 }

 package com.sky.config;
 ​
 import com.sky.interceptor.JwtTokenAdminInterceptor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
 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;
 ​
 /**
  * 配置类,注册web层相关组件
  */
 @Configuration
 @Slf4j
 public class WebMvcConfiguration extends WebMvcConfigurationSupport {
 ​
     @Autowired
     private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
 ​
     /**
      * 注册自定义拦截器
      *
      * @param registry
      */
     protected void addInterceptors(InterceptorRegistry registry) {
         log.info("开始注册自定义拦截器...");
         registry.addInterceptor(jwtTokenAdminInterceptor)
                 .addPathPatterns("/admin/**") //拦截路径
                 .excludePathPatterns("/admin/employee/login"); //
     }
 ​
     /**
      * 通过knife4j生成接口文档
      * @return
      */
     @Bean
     public Docket docket() {
         ApiInfo apiInfo = new ApiInfoBuilder()
                 .title("项目接口文档")
                 .version("2.0")
                 .description("项目接口文档")
                 .build();
         Docket docket = new Docket(DocumentationType.SWAGGER_2)
                 .apiInfo(apiInfo)
                 .select()
                 .apis(RequestHandlerSelectors.basePackage("controller路径"))
                 .paths(PathSelectors.any())
                 .build();
         return docket;
     }
 ​
     /**
      * 设置静态资源映射
      * @param registry
      */
     protected void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
         registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
     }
 }

运行springboot程序后:输入地址 :https://localhost:8080/doc.html

swagger常用注解

@Api:

用在类上,例如Controller,表示对类的说明。

事例:@Api(tags="类的作用")

@ApiModel:

用在类(实体类)上,用于用途的说明,例如entity,DTO,VO

事例:@ApiModel(description="实体类的作用")-----"xxxxxx时传入的数据模型 "

@ApiModelProperty:

用在属性上,描述属性信息

事例:@ApiModelProperty("说明")

@ApiOperation:

用在方法上,例如Controller的方法,说明方法的用途,作用。

事例:@ApiOperation(value="方法的作用")

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值