knife4j的使用---速通

149 阅读1分钟

1.介绍

image.png

2.添加依赖

image.png

3.yml配置

注意 一定要

image.png

4.Controller接口加注解

image.png

5.访问端口---localhost:端口号/doc.html#/home

image.png

6.详细配置

/**
 * 创建API
 */
@Bean
public Docket createRestApi() {
    return new Docket(DocumentationType.OAS_30)
            // 是否启用Swagger
            .enable(true)
            // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
            .apiInfo(apiInfo())
            // 设置哪些接口暴露给Swagger展示
            .select()
            // 扫描所有有注解的api,用这种方式更灵活
            // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            // 扫描指定包中的swagger注解
            .apis(RequestHandlerSelectors.basePackage("com.xxx"))
            // 扫描所有 .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build()
            /* 设置安全模式,swagger可以设置访问token */
            .securitySchemes(securitySchemes())
            .securityContexts(securityContexts());
}

/**
 * 安全模式,这里指定token通过Authorization头请求头传递
 */
private List<SecurityScheme> securitySchemes() {
    List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>();
    apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue()));
    return apiKeyList;
}

/**
 * 安全上下文
 */
private List<SecurityContext> securityContexts() {
    List<SecurityContext> securityContexts = new ArrayList<>();
    securityContexts.add(
            SecurityContext.builder()
                    .securityReferences(defaultAuth())
                    .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
                    .build());
    return securityContexts;
}

/**
 * 默认的安全上引用
 */
private List<SecurityReference> defaultAuth() {
    AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = authorizationScope;
    List<SecurityReference> securityReferences = new ArrayList<>();
    securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
    return securityReferences;
}

/**
 * 添加摘要信息
 */
private ApiInfo apiInfo() {
    // 用ApiInfoBuilder进行定制
    return new ApiInfoBuilder()
            // 设置标题
            .title("标题:CRM系统_接口文档")
            // 描述
            .description("")
            // 作者信息
            .contact(new Contact("ccc", null, null))
            // 版本
            .version("版本号:" + 1.0)
            .build();
}