• springboot集成swagger并更换主题


    前言

    swagger对于web一个开发人员,可以说是非常熟悉的了,之前都是用的公司搭好的框架拿来就用,自己也没有研究过,最近想搞一个自己拿来练手的基础框架,因此来记录一下springboot集成swagger的过程和注意事项。

    swagger介绍

    1.是一款让你更好的书写API接口文档的的规范且完整框架。

    2.提供描述、生产、消费和可视化的电子书

    3.是由庞大工具集合支撑的形式化规范。

    4.简单理解:swagger就是为了方便系统生成API接口文档的。

    版本依赖

    2.6.0一下版本只需要导入依赖即可,我使用的版本是2.9.2,此版本还需要在yml配置文件里添加如下配置

    1. <dependency>
    2. <groupId>io.springfoxgroupId>
    3. <artifactId>springfox-swagger-uiartifactId>
    4. <version>2.9.2version>
    5. dependency>
    6. <dependency>
    7. <groupId>io.springfoxgroupId>
    8. <artifactId>springfox-swagger2artifactId>
    9. <version>2.9.2version>
    10. dependency>
    1. spring:
    2. mvc:
    3. pathmatch:
    4. matching-strategy: ant_path_matcher

     swagger配置

    swagger其实可以直接在启动类加上@EnableSwagger2注解就可以正常开启,但终归是缺少点配置项,可以自定义一个配置类,且我们习惯把参数配置添加到yml中,因此我们可以这样定义

    属性类 

    1. @Data
    2. @Configuration
    3. public class SwaggerProperties{
    4. @Value("${swagger.basePackage:com.buttonwood}")
    5. private String basePackage;
    6. @Value("${swagger.title:''}")
    7. private String title;
    8. @Value("${swagger.group:''}")
    9. private String group;
    10. @Value("${swagger.description:''}")
    11. private String description;
    12. @Value("${swagger.version:''}")
    13. private String version;
    14. @Value("${swagger.author:''}")
    15. private String author;
    16. @Value("${swagger.url:''}")
    17. private String url;
    18. @Value("${swagger.email:''}")
    19. private String email;
    20. @Value("${swagger.license:''}")
    21. private String license;
    22. @Value("${swagger.licenseUrl:''}")
    23. private String licenseUrl;
    24. }

    配置类

    1. @Configuration
    2. @ConditionalOnProperty(
    3. prefix = "swagger",
    4. name = {"enable"},
    5. havingValue = "true"
    6. )
    7. @Import({Swagger2DocumentationConfiguration.class})
    8. public class SwaggerConfig implements WebMvcConfigurer {
    9. private final TypeResolver typeResolver;
    10. private final SwaggerProperties swaggerProperties;
    11. public SwaggerConfig(TypeResolver typeResolver, SwaggerProperties swaggerProperties) {
    12. this.typeResolver = typeResolver;
    13. this.swaggerProperties = swaggerProperties;
    14. }
    15. public void addResourceHandlers(ResourceHandlerRegistry registry) {
    16. registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    17. registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
    18. registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    19. }
    20. @Bean
    21. public Docket swaggerApi() {
    22. return (new Docket(DocumentationType.SWAGGER_2))
    23. .select()
    24. .paths(PathSelectors.any())
    25. .build().groupName(swaggerProperties.getGroup())
    26. .apiInfo(this.apiInfo(swaggerProperties))
    27. .additionalModels(this.typeResolver.resolve(RequestMessage.class))
    28. .additionalModels(this.typeResolver.resolve(ResponseMessage.class));
    29. }
    30. private ApiInfo apiInfo(SwaggerProperties swagger) {
    31. return new ApiInfo(swagger.getTitle(),
    32. swagger.getDescription(),
    33. swagger.getVersion(),
    34. (String) null,
    35. new Contact(swagger.getAuthor(), swagger.getUrl(), swagger.getEmail()),
    36. swagger.getLicense(),
    37. "",
    38. Collections.emptyList());
    39. }
    40. }

    yml文件配置 

    1. #swagger配置
    2. swagger:
    3. enable: true
    4. basePackage: com.buttonwood
    5. title: 接口文档
    6. group: 接口说明文档
    7. description: API 接口扫描、执行、测试工具
    8. version: 1.0
    9. author: admin
    10. url: http://www.zhangsan.com
    11. email: 12345@qq.com

     更换国内UI

    此时我们访问  http://localhost:8080/swagger-ui.html 地址就可以看到一下页面

     此页面是swagger原生的页面,很明显他不符合我们国人的审美,此时我们就需要跟换它的UI,也很简单,已经有前人大佬帮我们封装好了。

    swagger-bootstrap-ui

    1. <dependency>
    2. <groupId>com.github.xiaoymingroupId>
    3. <artifactId>swagger-bootstrap-uiartifactId>
    4. <version>1.9.6version>
    5. dependency>

    用法很简单只需要将依赖引入即可,但是该版本现在作者已不再维护,并对其进行了重构,重构后的swagger更美观一些,本着有新的就不用了旧的原则,于是我采用的是重构后的项目--knife4j-spring-ui

    knife4j-spring-ui

    1. <dependency>
    2. <groupId>com.github.xiaoymingroupId>
    3. <artifactId>knife4j-spring-uiartifactId>
    4. <version>3.0.3version>
    5. dependency>

    引入该依赖后我们访问 http://locahost:8080/doc.html#/home   就可以访问到新的UI

     

  • 相关阅读:
    保研复习-计算机组成原理
    国产自主可控C++工业软件可视化图形架构源码
    基于函数计算自定义运行时快速部署一个 springboot 项目
    【无标题】
    英集芯IP5566带TYPE-C口3A充放快充移动电源5w无线充二合一方案SOC
    18张值得收藏的高清卫星影像
    ajax与python flask之间的表单数据传输
    何为指针,与数组名有什么区别
    杠杆思维和时间管理
    【云原生 | Kubernetes 实战】05、Pod高级实战:基于污点、容忍度、亲和性的多种调度策略(上)
  • 原文地址:https://blog.csdn.net/winerpro/article/details/128067885