springboot集成swagger并更换主题

前言

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

swagger介绍

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

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

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

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

版本依赖

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

		<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

 swagger配置

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

属性类 

@Data
@Configuration
public class SwaggerProperties{

    @Value("${swagger.basePackage:com.buttonwood}")
	private String basePackage;
    @Value("${swagger.title:''}")
    private String title;
    @Value("${swagger.group:''}")
    private String group;
    @Value("${swagger.description:''}")
    private String description;
    @Value("${swagger.version:''}")
    private String version;
    @Value("${swagger.author:''}")
    private String author;
    @Value("${swagger.url:''}")
    private String url;
    @Value("${swagger.email:''}")
    private String email;
    @Value("${swagger.license:''}")
    private String license;
    @Value("${swagger.licenseUrl:''}")
    private String licenseUrl;
}

配置类

@Configuration
@ConditionalOnProperty(
        prefix = "swagger",
        name = {"enable"},
        havingValue = "true"
)
@Import({Swagger2DocumentationConfiguration.class})
public class SwaggerConfig implements WebMvcConfigurer {
    private final TypeResolver typeResolver;

    private final SwaggerProperties swaggerProperties;

    public SwaggerConfig(TypeResolver typeResolver, SwaggerProperties swaggerProperties) {
        this.typeResolver = typeResolver;
        this.swaggerProperties = swaggerProperties;
    }

    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    @Bean
    public Docket swaggerApi() {
        return (new Docket(DocumentationType.SWAGGER_2))
                .select()
                .paths(PathSelectors.any())
                .build().groupName(swaggerProperties.getGroup())
                .apiInfo(this.apiInfo(swaggerProperties))
                .additionalModels(this.typeResolver.resolve(RequestMessage.class))
                .additionalModels(this.typeResolver.resolve(ResponseMessage.class));
    }


    private ApiInfo apiInfo(SwaggerProperties swagger) {
        return new ApiInfo(swagger.getTitle(),
                swagger.getDescription(),
                swagger.getVersion(),
                (String) null,
                new Contact(swagger.getAuthor(), swagger.getUrl(), swagger.getEmail()),
                swagger.getLicense(),
                "",
                Collections.emptyList());
    }
}

yml文件配置 

#swagger配置
swagger:
  enable: true
  basePackage: com.buttonwood
  title: 接口文档
  group: 接口说明文档
  description: API 接口扫描、执行、测试工具
  version: 1.0
  author: admin
  url: http://www.zhangsan.com
  email: 12345@qq.com

 更换国内UI

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

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

swagger-bootstrap-ui

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.6</version>
</dependency>

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

knife4j-spring-ui

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-ui</artifactId>
    <version>3.0.3</version>
</dependency>

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

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值