SpringBoot集成Swagger接口文档/测试
  JSyQuVB76RO7 2023年11月19日 16 0



文章目录

  • Swagger 介绍
  • Swagger 使用
  • 常用注解



Swagger 介绍

使用 Swagger 你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网:https://swagger.io/

Knife4j 是为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解决方案。(对 Swagger 进行了封装,简化了相应操作)

SpringBoot集成Swagger接口文档/测试_接口文档

Swagger 使用

  1. 导入 Knife4j 的 maven 坐标
  2. 在配置类中加入 Knife4j 相关配置
  3. 设置静态资源映射,否则接口文档页面无法访问

SpringBoot集成Swagger接口文档/测试_接口测试_02


SpringBoot集成Swagger接口文档/测试_spring boot_03


SpringBoot集成Swagger接口文档/测试_Swagger_04

knife4j坐标

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>

WebMvcConfiguration 中进行配置

/**
 * 配置类,注册web层相关组件
 */
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    @Autowired
    private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
    @Autowired
    private JwtTokenUserInterceptor jwtTokenUserInterceptor;

    /**
     * 注册自定义拦截器
     *
     * @param registry
     */
    protected void addInterceptors(InterceptorRegistry registry) {
        log.info("开始注册自定义拦截器...");
        registry.addInterceptor(jwtTokenAdminInterceptor)
                .addPathPatterns("/admin/**")
                .excludePathPatterns("/admin/employee/login");

        registry.addInterceptor(jwtTokenUserInterceptor)
                .addPathPatterns("/user/**")
                .excludePathPatterns("/user/user/login")
                .excludePathPatterns("/user/shop/status")
                .excludePathPatterns("/user/order/paySuccess");
    }

    /**
     * 通过knife4j生成接口文档
     * @return
     */
    @Bean
    public Docket docket1() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .groupName("管理端接口")
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }

    @Bean
    public Docket docket2() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .groupName("用户端接口")
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller.user"))
                .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/");
    }
}

访问 xxx/doc.html 可以看到相应的接口文档页面

SpringBoot集成Swagger接口文档/测试_spring boot_05

可以在此处添加全局参数,比如 token

SpringBoot集成Swagger接口文档/测试_Swagger_06

通过调试发送请求,测试接口功能

SpringBoot集成Swagger接口文档/测试_Knife4j_07

常用注解

SpringBoot集成Swagger接口文档/测试_接口文档_08

@Api 用在Controller 类上:

SpringBoot集成Swagger接口文档/测试_Swagger_09

@ApiOperation 用在Controller 的方法上:

SpringBoot集成Swagger接口文档/测试_Knife4j_10

@ApiModel 用在 dto、vo、entity 类上:

SpringBoot集成Swagger接口文档/测试_Knife4j_11

@ApiModelProperty 用在实体类属性上

SpringBoot集成Swagger接口文档/测试_Swagger_12


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
JSyQuVB76RO7