SwaggerConfig.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.yihu.jw;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import springfox.documentation.builders.ApiInfoBuilder;
  5. import springfox.documentation.builders.ParameterBuilder;
  6. import springfox.documentation.builders.PathSelectors;
  7. import springfox.documentation.builders.RequestHandlerSelectors;
  8. import springfox.documentation.schema.ModelRef;
  9. import springfox.documentation.service.ApiInfo;
  10. import springfox.documentation.service.Contact;
  11. import springfox.documentation.service.Parameter;
  12. import springfox.documentation.spi.DocumentationType;
  13. import springfox.documentation.spring.web.plugins.Docket;
  14. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. import static com.google.common.base.Predicates.or;
  18. import static springfox.documentation.builders.PathSelectors.regex;
  19. @Configuration
  20. @EnableSwagger2
  21. public class SwaggerConfig {
  22. public static final String API_VERSION = "v1.0";
  23. final String userAgentJson = "{\"id\":int,\"uid\":string,\"openid\":string,\"token\":string,\"lastUid\":string,\"platform\":int}";
  24. private List<Parameter> addUseragent() {
  25. ParameterBuilder tokenPar = new ParameterBuilder();
  26. List<Parameter> pars = new ArrayList<>();
  27. tokenPar.name("userAgent").description(userAgentJson).modelRef(new ModelRef("string")).parameterType("header").required(false).defaultValue("").build();
  28. pars.add(tokenPar.build());
  29. return pars;
  30. }
  31. @Bean
  32. public Docket publicAPI() {
  33. List<Parameter> pars = addUseragent();
  34. return new Docket(DocumentationType.SWAGGER_2)
  35. .groupName("Default")
  36. .useDefaultResponseMessages(false)
  37. .forCodeGeneration(true)
  38. .pathMapping("/")
  39. .select()
  40. .apis(RequestHandlerSelectors.basePackage("com.yihu"))
  41. .paths(PathSelectors.any())
  42. .build()
  43. .globalOperationParameters(pars)
  44. .apiInfo(publicApiInfo());
  45. }
  46. @Bean
  47. public Docket privateAPI() {
  48. return new Docket(DocumentationType.SWAGGER_2)
  49. .groupName("Private")
  50. .useDefaultResponseMessages(false)
  51. .forCodeGeneration(false)
  52. .pathMapping("/")
  53. .select()
  54. .paths(or(regex("/archaius"),
  55. regex("/loggers*"),
  56. regex("/mappings"),
  57. regex("/pause"),
  58. regex("/beans"),
  59. regex("/health"),
  60. regex("/resume"),
  61. regex("/heapdump"),
  62. regex("/env*"),
  63. regex("/shutdown"),
  64. regex("/configprops"),
  65. regex("/auditevents"),
  66. regex("/restart"),
  67. regex("/trace"),
  68. regex("/metrics*"),
  69. regex("/refresh"),
  70. regex("/dump"),
  71. regex("/autoconfig"),
  72. regex("/info"),
  73. regex("/ChildManageController"),
  74. regex("/features")))
  75. .build()
  76. .apiInfo(privateAPIInfo());
  77. }
  78. @Bean
  79. public Docket legacyAPI(){
  80. return new Docket(DocumentationType.SWAGGER_2)
  81. .groupName("Legacy")
  82. .useDefaultResponseMessages(false)
  83. .forCodeGeneration(false)
  84. .pathMapping("/")
  85. .select()
  86. .paths(or(regex("/legacy/rest/v.*")))
  87. .build()
  88. .apiInfo(legacyApiInfo());
  89. }
  90. /**
  91. * 测试client信息。
  92. *
  93. * @return
  94. */
  95. /*@Bean
  96. SecurityConfiguration security() {
  97. return new SecurityConfiguration(
  98. "ehr-browser",
  99. "secret123",
  100. "ROLE_CLIENT",
  101. "test-app",
  102. "ac04-47ec-9a9a-7c47bbcbbbd1");
  103. }*/
  104. private ApiInfo publicApiInfo() {
  105. return new ApiInfoBuilder()
  106. .title("众健信联平台API")
  107. .description("众健信联平台API,提供后端基础数据接口")
  108. .version(API_VERSION)
  109. .termsOfServiceUrl("https://www.yihu.com")
  110. .contact(new Contact("Jkzl Xiamen R & D Center Platform Development.", "https://www.yihu.com", "jzkl@jkzl.com"))
  111. .license("The Apache License, Version 2.0")
  112. .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
  113. .build();
  114. }
  115. private ApiInfo privateAPIInfo() {
  116. return new ApiInfoBuilder()
  117. .title("众健信联平台API")
  118. .description("众健信联平台API,提供微服务监控接口")
  119. .version(API_VERSION)
  120. .termsOfServiceUrl("https://www.yihu.com")
  121. .contact(new Contact("Jkzl Xiamen R & D Center Platform Development.", "https://www.yihu.com", "jzkl@jkzl.com"))
  122. .license("The Apache License, Version 2.0")
  123. .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
  124. .build();
  125. }
  126. private ApiInfo legacyApiInfo() {
  127. return new ApiInfoBuilder()
  128. .title("众健信联平台API")
  129. .description("众健信联平台API,提供遗留版本后端基础数据接口")
  130. .version(API_VERSION)
  131. .termsOfServiceUrl("https://www.yihu.com")
  132. .contact(new Contact("Jkzl Xiamen R & D Center Platform Development.", "https://www.yihu.com", "jzkl@jkzl.com"))
  133. .license("The Apache License, Version 2.0")
  134. .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
  135. .build();
  136. }
  137. }