• 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

     

  • 相关阅读:
    业务需要咨询?开发遇到 bug 想反馈?开发者在线提单功能上线!
    项目实战第十七讲:使用异步编排优化商品详情页(对外流量最大)
    QGIS编译(跨平台编译)之五十五:Qt Creator环境下libdxfrw库的pro文件
    C++的内存管理是怎样的?
    图形处理软件Photoshop Elements 2020 mac中文版 ps简化版
    面试:dumpsys meminfo 内存信息含义
    编程逻辑入门必备:演绎推理
    LeetCode——【第一周】
    randint和randrange的区别
    Android 监听卫星导航系统状态及卫星测量数据变化
  • 原文地址:https://blog.csdn.net/winerpro/article/details/128067885