码迷,mamicode.com
首页 > 其他好文 > 详细

swagger (九)

时间:2019-04-11 23:29:56      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:tap   art   注解   create   接口文档   gis   ret   ack   inf   

创建创建microservicecloud-swagger

pom文件

eureka:
  client: #客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
      ###是否向注册中心注册自己
    register-with-eureka: true
      ###是否需要从eureka上获取注册信息
    fetch-registry: true

 yml文件

eureka:
  client: #客户端注册进eureka服务列表内
    service-url:
      defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
      ###是否向注册中心注册自己
    register-with-eureka: true
      ###是否需要从eureka上获取注册信息
    fetch-registry: true

 

 properties文件

#swagger配置
swagger.enabled=true
swagger.title=Auth-Server-API
swagger.description=Auth-Server接口说明
swagger.basePackage=com.yehui.controller
swagger.basePath=/**
swagger.excludePath=/error
swagger.version=1.0
#接口管理员配置
swagger.contact.name=yehui
swagger.contact.url=xiaokun.wang@midea.com
swagger.contact.email=xiaokun.wang@midea.com
server.port=9003
eureka.client.u

 

 扫描单包  swagger类

@Configuration
@EnableSwagger2 //swagger注解
public class SwaggerConfig {

    @Autowired
    private Environment ev;

    //得到扫描包
    public String getBasePack(){
        String basePage = ev.getProperty("swagger.basePackage");
        return isEmpty(basePage)?"":basePage;
    }

    //得到标题
    public String getTitle(){
        String title = ev.getProperty("swagger.title");
        return isEmpty(title)?"":title;
    }
    //接口文档说明
    public String getDescription(){
        String description = ev.getProperty("swagger.description");
        return isEmpty(description)?"":description;
    }
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                // api扫包
                .apis(RequestHandlerSelectors.basePackage(getBasePack())).paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title(getTitle()).description(getDescription())
                .termsOfServiceUrl("http://www.itmayiedu.com")//官方网址
                 .contact(contact())
                .version(getVersion()).build();
    }
    //获取版本号
    public String getVersion(){
        String version = ev.getProperty("swagger.version");
        return isEmpty(version)?"":version;
    }
    //接口管理员配置
    public Contact contact(){
        String name = ev.getProperty("swagger.contact.name");
        String url = ev.getProperty("swagger.contact.url");
        String email = ev.getProperty("swagger.contact.email");
        name = isEmpty(name)?"":name;
        url = isEmpty(url)?"":url;
        email = isEmpty(email)?"":email;
        return new Contact(name,url,email);
    }
    /**
     * 判断字符串是否为空,null或者length=0表示空值
     *
     * @param str
     * @return true-空字符串,false-非空字符串
     */
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }

}

 

支持多包的swagger类

@Component
@EnableSwagger2
public class SwaggerConfig {
    @Autowired
    private Environment env;

    private String basePackage() { // controller接口所在的包
        String basePackage = env.getProperty("swagger.basePackage");
        return CommUtil.isEmpty(basePackage) ? "" : basePackage;
    }

    private String title() { // 当前文档的标题
        String title = env.getProperty("swagger.title");
        return CommUtil.isEmpty(title) ? "说明文档" : title;
    }

    private String description() { // 当前文档的详细描述
        String description = env.getProperty("swagger.description");
        return CommUtil.isEmpty(description) ? "接口说明文档" : description;
    }

    private String version() { // 当前文档的版本
        String version = env.getProperty("swagger.version");
        return CommUtil.isEmpty(version) ? "1.0" : version;
    }

    private Contact contact() { // 接口管理员配置
        String name = env.getProperty("swagger.contact.name");
        String url = env.getProperty("swagger.contact.url");
        String email = env.getProperty("swagger.contact.email");

        return new Contact(CommUtil.isEmpty(name) ? "admin" : name, CommUtil.isEmpty(url) ? "admin@midea.ciom" : url,
                CommUtil.isEmpty(email) ? "admin@midea.ciom" : email);
    }

    @Bean
    public Docket newDocket() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                .apis(input -> declaringClass(input).transform(handlerPackage(basePackage())).or(true))
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title(title()).description(description()).version(version()).contact(contact())
                .build();
    }

    private Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
        return input -> {
            // 循环判断匹配
            for (String strPackage : basePackage.split(",")) {
                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
                if (isMatch) {
                    return true;
                }
            }
            return false;
        };
    }

    private Optional<? extends Class<?>> declaringClass(RequestHandler input) {
        return Optional.fromNullable(input.declaringClass());
    }
}

 

启动服务测试

 

swagger (九)

标签:tap   art   注解   create   接口文档   gis   ret   ack   inf   

原文地址:https://www.cnblogs.com/cxyyh/p/10693308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!