SwaggerConfig.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.yihu.jw.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.ComponentScan;
  4. import org.springframework.context.annotation.Configuration;
  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.Parameter;
  11. import springfox.documentation.spi.DocumentationType;
  12. import springfox.documentation.spring.web.plugins.Docket;
  13. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import static com.google.common.base.Predicates.or;
  17. import static springfox.documentation.builders.PathSelectors.regex;
  18. @Configuration
  19. @EnableSwagger2
  20. @ComponentScan("com.yihu.jw.controller.**")
  21. public class SwaggerConfig {
  22. public static final String base_API = "base";
  23. public static final String wlyy_API = "wlyy";
  24. public static final String login_API = "login";
  25. public static final String iot_API = "iot";
  26. final String userAgentJson = "{\"id\":int,\"uid\":string,\"openid\":string,\"token\":string,\"lastUid\":string,\"platform\":int}";
  27. @Bean
  28. public Docket baseAPI() {
  29. List<Parameter> pars = addToken();
  30. return new Docket(DocumentationType.SWAGGER_2)
  31. .groupName(base_API)
  32. .useDefaultResponseMessages(false)
  33. .apiInfo(baseApiInfo())
  34. .select()
  35. .apis(RequestHandlerSelectors.basePackage("com.yihu.jw.controller.base"))
  36. .paths(PathSelectors.any())
  37. .build().globalOperationParameters(pars);
  38. }
  39. private ApiInfo baseApiInfo() {
  40. ApiInfo apiInfo = new ApiInfo("基卫2.0API",
  41. "基卫2.0API,提供基础卫生相关服务。",
  42. "1.0",
  43. "No terms of service",
  44. "wenfujian@jkzl.com",
  45. "The Apache License, Version 2.0",
  46. "http://www.apache.org/licenses/LICENSE-2.0.html"
  47. );
  48. return apiInfo;
  49. }
  50. private List<Parameter> addToken() {
  51. ParameterBuilder tokenPar = new ParameterBuilder();
  52. ParameterBuilder userAgentPar = new ParameterBuilder();
  53. List<Parameter> pars = new ArrayList<Parameter>();
  54. userAgentPar.name("Authorization").description("\"Authorization\":\"bearer 5fe6b2c3-f69c-4ddc-a36a-367cdf9479a3\"").modelRef(new ModelRef("string")).parameterType("header").required(false).defaultValue("").build();
  55. tokenPar.name("accesstoken").description("accesstoken").modelRef(new ModelRef("string")).parameterType("header").required(false).defaultValue("").build();
  56. pars.add(tokenPar.build());
  57. pars.add(userAgentPar.build());
  58. return pars;
  59. }
  60. @Bean
  61. public Docket wlyyAPI() {
  62. List<Parameter> pars = addToken();
  63. return new Docket(DocumentationType.SWAGGER_2)
  64. .groupName(wlyy_API)
  65. .useDefaultResponseMessages(false)
  66. .apiInfo(wlyyApiInfo())
  67. .select()
  68. .apis(RequestHandlerSelectors.basePackage("com.yihu.jw.controller.wlyy"))
  69. .paths(PathSelectors.any())
  70. .build().globalOperationParameters(pars);
  71. }
  72. private ApiInfo wlyyApiInfo() {
  73. ApiInfo apiInfo = new ApiInfo("基卫2.0API",
  74. "基卫2.0API,提供基础卫生相关服务。",
  75. "1.0",
  76. "No terms of service",
  77. "wenfujian@jkzl.com",
  78. "The Apache License, Version 2.0",
  79. "http://www.apache.org/licenses/LICENSE-2.0.html"
  80. );
  81. return apiInfo;
  82. }
  83. @Bean
  84. public Docket loginAPI() {
  85. List<Parameter> pars = addToken();
  86. return new Docket(DocumentationType.SWAGGER_2)
  87. .groupName(login_API)
  88. .useDefaultResponseMessages(false)
  89. .apiInfo(loginApiInfo())
  90. .select()
  91. .apis(RequestHandlerSelectors.basePackage("com.yihu.jw.controller.login"))
  92. .paths(PathSelectors.any())
  93. .build().globalOperationParameters(pars);
  94. }
  95. private ApiInfo loginApiInfo() {
  96. ApiInfo apiInfo = new ApiInfo("基卫2.0API",
  97. "基卫2.0API,提供基础卫生相关服务。",
  98. "1.0",
  99. "No terms of service",
  100. "wenfujian@jkzl.com",
  101. "The Apache License, Version 2.0",
  102. "http://www.apache.org/licenses/LICENSE-2.0.html"
  103. );
  104. return apiInfo;
  105. }
  106. @Bean
  107. public Docket iotAPI() {
  108. List<Parameter> pars = addToken();
  109. return new Docket(DocumentationType.SWAGGER_2)
  110. .groupName(iot_API)
  111. .useDefaultResponseMessages(false)
  112. .apiInfo(iotApiInfo())
  113. .select()
  114. .apis(RequestHandlerSelectors.basePackage("com.yihu.jw.controller.iot"))
  115. .paths(PathSelectors.any())
  116. .build().globalOperationParameters(pars);
  117. }
  118. private ApiInfo iotApiInfo() {
  119. ApiInfo apiInfo = new ApiInfo("基卫2.0API",
  120. "基卫2.0API,提供物联网相关服务。",
  121. "1.0",
  122. "No terms of service",
  123. "wenfujian@jkzl.com",
  124. "The Apache License, Version 2.0",
  125. "http://www.apache.org/licenses/LICENSE-2.0.html"
  126. );
  127. return apiInfo;
  128. }
  129. @Bean
  130. public Docket allAPL() {
  131. List<Parameter> pars = addToken();
  132. return new Docket(DocumentationType.SWAGGER_2)
  133. .groupName("all")
  134. .useDefaultResponseMessages(false)
  135. .apiInfo(wlyyApiInfo())
  136. .select()
  137. .apis(RequestHandlerSelectors.any()) // 对所有api进行监控
  138. .paths(or(
  139. regex("/.*")
  140. ))
  141. .paths(PathSelectors.any())
  142. .build().globalOperationParameters(pars);
  143. }
  144. private ApiInfo appApiInfo() {
  145. ApiInfo apiInfo = new ApiInfo("基卫2.0API",
  146. "基卫2.0API,提供基础卫生相关服务。",
  147. "1.0",
  148. "No terms of service",
  149. "wenfujian@jkzl.com",
  150. "The Apache License, Version 2.0",
  151. "http://www.apache.org/licenses/LICENSE-2.0.html"
  152. );
  153. return apiInfo;
  154. }
  155. }