All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yupaits.yutool.plugin.swagger.utils.SwaggerUtils Maven / Gradle / Ivy

There is a newer version: 1.2.4
Show newest version
package com.yupaits.yutool.plugin.swagger.utils;

import com.google.common.base.Predicates;
import com.yupaits.yutool.plugin.swagger.config.ApiProps;
import com.yupaits.yutool.plugin.swagger.model.GroupApiInfo;
import org.apache.commons.lang3.StringUtils;
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;

/**
 * Swagger工具类
 * @author yupaits
 * @date 2019/8/1
 */
public class SwaggerUtils {
    public static final String SPRING_BOOT_PACKAGE = "org.springframework.boot";

    /**
     * 获取全局Docket
     * @param apiProps ApiProps参数
     * @return Docket对象
     */
    public static Docket docket(ApiProps apiProps) {
        GroupApiInfo group = GroupApiInfo.builder()
                .name(Docket.DEFAULT_GROUP_NAME)
                .title(apiProps.getTitle())
                .description(apiProps.getDescription())
                .basePackage(apiProps.getBasePackage())
                .contactName(apiProps.getContactName())
                .contactUrl(apiProps.getContactUrl())
                .contactEmail(apiProps.getContactEmail())
                .build();
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName(group.getName())
                .apiInfo(apiInfo(apiProps, group))
                .select()
                .apis(RequestHandlerSelectors.basePackage(group.getBasePackage()))
                .apis(Predicates.not(RequestHandlerSelectors.basePackage(SwaggerUtils.SPRING_BOOT_PACKAGE)))
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 根据分组名获取Docket
     * @param apiProps ApiProps参数
     * @param groupName 分组名
     * @return Docket对象
     */
    public static Docket docket(ApiProps apiProps, String groupName) {
        GroupApiInfo group = apiProps.getGroups().stream()
                .filter(info -> StringUtils.equals(groupName, info.getName()))
                .findFirst()
                .orElse(new GroupApiInfo());
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName(group.getName())
                .apiInfo(apiInfo(apiProps, group))
                .select()
                .apis(RequestHandlerSelectors.basePackage(group.getBasePackage()))
                .apis(Predicates.not(RequestHandlerSelectors.basePackage(SPRING_BOOT_PACKAGE)))
                .paths(PathSelectors.any())
                .build();
    }

    /**
     * 获取ApiInfo信息
     * @param apiProps ApiProperties配置
     * @param groupApiInfo 分组API信息
     * @return ApiInfo对象
     */
    public static ApiInfo apiInfo(ApiProps apiProps, GroupApiInfo groupApiInfo) {
        return new ApiInfoBuilder().title(groupApiInfo.getTitle())
                .description(groupApiInfo.getDescription())
                .version(apiProps.getVersion())
                .contact(groupApiInfo.getContact() != null ? groupApiInfo.getContact() : apiProps.getContact())
                .license(apiProps.getLicense())
                .licenseUrl(apiProps.getLicenseUrl())
                .termsOfServiceUrl(apiProps.getTermsOfServiceUrl())
                .build();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy