springBoot集成springDoc

1,783 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6月更文挑战」的第1天,点击查看活动详情

  • 今天正好在项目用到了springDoc,正好借这个机会来给大家介绍以下。

swagger和springDoc对比

Swagger优点:1、节省了开发者的时间写文档,降低了后续维护代码的复杂度。2、Swagger提供了在线调用postman的接口。服务写完后可直接运行项目,然后点击测试,提高了测试效率。

有人可能问了,既然swagger有优点,为什么我还需要换其他的,接下来我们浅谈下他的缺点。

swagger缺点: 1、目前的Swagger已经停止维护了,最近的一次更新已经在2017年了。2、Swagger依赖于大量注解,为了使描述接口文档描述的更详细,你可能需要对每一个字段都加个注解,可能如下图所示

image.png 3、 Swagger 不支持自定义接口文档,不能指明某一个功能需要使用哪些接口,有什么注意事项

如果单纯的就想用springDoc,那们就从下面开始做学一下吧。

springDoc优点:1、零侵入,我们来看下演示应用程序的源代码(演示应用程序的源代码地址:(gitee.com/smart-doc-t… OpenAPI 3 库 (springdoc.org)](springdoc.org/index.html#…

image.png2、根据标准的java注释即可生成文档

1、添加依赖

**< dependency >
<
groupId > **org.springdoc **</ groupId >
<
artifactId > **springdoc-openapi-ui **</ artifactId >
<
version > **1.6.5 </ version >
</
dependency >

2、配置srpingDoc类,可以通过编程类,可以通过注解实现,本文采用的是第一种,在结尾附上通过注解实现。
package ics.imedx.visit.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;

/**
 * @description 配置类
 * @author yxg
 * @since 2022-06-12
 */
public class SpringDocConfig {
    @Bean
    public OpenAPI createApi(){
        return new OpenAPI().info(getInfo());
    }

    // 创建元数据
    private Info getInfo(){
        return new Info()
                // 标题
                .title("SpringDoc 接口文档")
                // 简短描述
                .description("基于OpenAPI 3的API文档生成工具")
                // 指向服务条款的URL地址,必须是URL地址格式
                .termsOfService("http://localhost:8081")
                // 公开的API的联系人信息
                .contact(createCon())
                // API文档的版本信息
                .version("0.1");
    }

    // 创建公开的API的联系人信息
    private Contact createCon(){
        return new Contact()
                .email("3478569943@qq.com")
                .name("yxg")
                .url("http://9008.com");
    }

}
3、使用注解

image.png

4、启动

地址为http://ip+端口号/doc/index.html 这样就我们就可以正常使用springDoc文档了

附上springDoc配置注解
{
  "serverUrl": "http://localhost:8080",      -- 服务器地址
  "allInOne": true,                -- 是否将文档合并到一个文件中,一般推荐为true
  "outPath": "src/main/resources/static/doc",  -- 指定文档的输出路径
  "createDebugPage": true,           -- 开启测试
  "allInOneDocFileName":"index.html",      -- 自定义文档名称
  "projectName": "初识smart-doc"        -- 项目名称
}