无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

Spring Boot 进阶-详解Spring Boot中使用swagger3(Swagger3.0)

Java dancy 1年前 (2023-11-28) 232次浏览 已收录 0个评论 扫描二维码
Spring Boot 进阶-详解Spring Boot中使用swagger3(Swagger3.0)

这篇文章中我们来深入学习一下Spring Boot中swagger3 的其他高级用法。在日常的开发中,为了减少工作量,我们会遇到一种情况,就是将前端的接口与后端的接口编写到同一个代码中,这样也提高了代码的复用率,减少了重复开发代码的工作量。这个时候我们就需要将接口文档也进行拆分。分为前端接口和后端接口两个部分。

在Swagger3.0中如何进行接口分组呢?

Swagger3.0 接口分组操作

通过之前的例子我们知道,我们往容器中注入一个Docket就是注入了一个文档,其中我们设置了groupName的分组名称。要想注入多个文档,意思就是需要往容器中注入多个Docket。既然是这样,我们就需要修改之前的Swagger的配置文件,将其改为如下的代码。

@EnableOpenApi
@Configuration
@EnableConfigurationProperties(value = {SwaggerProperties.class})
public class Swagger3Config {

    @Autowired
    private SwaggerProperties swaggerProperties;

    @Bean
    public Docket frontApi(){
        return new Docket(DocumentationType.OAS_30)
                // 是否开启,根据环境配置
                .enable(swaggerProperties.getFront().getEnable())
                .groupName(swaggerProperties.getFront().getGroupName())
                .apiInfo(frontApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getFront().getBasePackege()))
                .paths(PathSelectors.any())
                .build();
    }

    // 前台API信息
    private ApiInfo frontApiInfo(){
        return new ApiInfoBuilder()
                .title(swaggerProperties.getFront().getTitle())
                .description(swaggerProperties.getFront().getDescription())
                .version(swaggerProperties.getFront().getVersion())
                .contact(
                        // 添加开发者信息
                        new Contact(
                                swaggerProperties.getFront().getContactName(),
                                swaggerProperties.getFront().getContactUrl(),
                                swaggerProperties.getFront().getContactEmail())
                ).build();
    }


    @Bean
    public Docket backApi(){
        return new Docket(DocumentationType.OAS_30)
                // 是否开启,根据环境配置
                .enable(swaggerProperties.getBack().getEnable())
                .groupName(swaggerProperties.getBack().getGroupName())
                .apiInfo(backApiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBack().getBasePackege()))
                .paths(PathSelectors.any())
                .build();
    }

    // 前台API信息
    private ApiInfo backApiInfo(){
        return new ApiInfoBuilder()
                .title(swaggerProperties.getBack().getTitle())
                .description(swaggerProperties.getBack().getDescription())
                .version(swaggerProperties.getBack().getVersion())
                .contact(
                        // 添加开发者信息
                        new Contact(
                                swaggerProperties.getBack().getContactName(),
                                swaggerProperties.getBack().getContactUrl(),
                                swaggerProperties.getBack().getContactEmail())
                ).build();
    }

}
点击展开
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

表情 贴图 加粗 删除线 居中 斜体 签到