spring boot集成smart-doc自动生成接口文档

1,基于maven项目来完成smart-doc接口文档的生成

在pom.xml文件添加插件依赖

<plugin>

<groupId>com.github.shalousun</groupId>

<artifactId>smart-doc-maven-plugin</artifactId>

<version>2.0.1</version>

<configuration>

<!--指定生成文档使用的配置文件-->

<configFile>./src/main/resources/smart-doc.json</configFile>

<projectName>测试</projectName>

</configuration>

<executions>

<execution>

<!--不需要在编译项目时自动生成文档可注释phase-->

<phase>compile</phase>

<goals>

<goal>html</goal>

</goals>

</execution>

</executions>

</plugin>

2,指定生成文档的json配置文件

如上:在resources目录新建一个json文件,该文件主要提供接口地址,接口请求头,请求公共参数,响应公共参数,响应码文件的配置。

这里提供一份文件参考:

{

  "serverUrl": "http://127.0.0.1", //设置服务器地址,非必须

  "isStrict": false, //是否开启严格模式

  "allInOne": true,  //是否将文档合并到一个文件中,一般推荐为true

  "outPath": "D://md2", //指定文档的输出路径

  "coverOld": true,  //是否覆盖旧的文件,主要用于mardown文件覆盖

  "packageFilters": "",//controller包过滤,多个包用英文逗号隔开

  "style":"xt256", //基于highlight.js的代码高亮设置,喜欢配色统一简洁的同学可以不设置

  "createDebugPage": true,//@since 2.0.0 smart-doc支持创建可以测试的html页面,仅在AllInOne模式中起作用。

  "md5EncryptedHtmlName": false,//只有每个controller生成一个html文件是才使用

  "projectName": "smart-doc",//配置自己的项目名称

  "skipTransientField": true,//目前未实现

  "showAuthor":true,//是否显示接口作者名称,默认是true,不想显示可关闭

  "requestFieldToUnderline":true, //自动将驼峰入参字段在文档中转为下划线格式,//@since 1.8.7 版本开始

  "responseFieldToUnderline":true,//自动将驼峰入参字段在文档中转为下划线格式,//@since 1.8.7 版本开始

  "inlineEnum":true,//设置为true会将枚举详情展示到参数表中,默认关闭,//@since 1.8.8版本开始

  "recursionLimit":7,//设置允许递归执行的次数用于避免栈溢出,默认是7,正常为3次以内,//@since 1.8.8版本开始

  "displayActualType":false,//配置true会在注释栏自动显示泛型的真实类型短类名,@since 1.9.6

  "ignoreRequestParams":[ //忽略请求参数对象,把不想生成文档的参数对象屏蔽掉,@since 1.9.2

      "org.springframework.ui.ModelMap"

  ],

  "dataDictionaries": [ //配置数据字典,没有需求可以不设置

    {

      "title": "http状态码字典", //数据字典的名称

      "enumClassName": "com.power.common.enums.HttpCodeEnum", //数据字典枚举类名称

      "codeField": "code",//数据字典字典码对应的字段名称

      "descField": "message"//数据字典对象的描述信息字典

    }

  ],

  "errorCodeDictionaries": [{ //错误码列表,没有需求可以不设置

    "title": "title",

    "enumClassName": "com.power.common.enums.HttpCodeEnum", //错误码枚举类,如果是枚举是在一个类中定义则用$链接类BaseErrorCode$Common

    "codeField": "code",//错误码的code码字段名称

    "descField": "message"//错误码的描述信息对应的字段名

  }],

  "revisionLogs": [ //设置文档变更记录,没有需求可以不设置

    {

      "version": "1.0", //文档版本号

      "revisionTime":"2020-12-31 10:30",//文档修订时间

      "status": "update", //变更操作状态,一般为:创建、更新等

      "author": "author", //文档变更作者

      "remarks": "desc" //变更描述

    }

  ],

  "customResponseFields": [ //自定义添加字段和注释,api-doc后期遇到同名字段则直接给相应字段加注释,非必须

    {

      "name": "code",//覆盖响应码字段

      "desc": "响应代码",//覆盖响应码的字段注释

      "ownerClassName": "org.springframework.data.domain.Pageable", //指定你要添加注释的类名

      "value": "00000"//设置响应码的值

    }

  ],

  "requestHeaders": [ //设置请求头,没有需求可以不设置

    {

      "name": "token",

      "type": "string",

      "desc": "desc",

      "required": false,

      "value":"55",

      "since": "-"

    }

  ],

  "rpcApiDependencies":[{ // 项目开放的dubbo api接口模块依赖,配置后输出到文档方便使用者集成

      "artifactId":"SpringBoot2-Dubbo-Api",

      "groupId":"com.demo",

      "version":"1.0.0"

  }],

  "rpcConsumerConfig":"src/main/resources/consumer-example.conf",//文档中添加dubbo consumer集成配置,用于方便集成方可以快速集成

  "apiObjectReplacements": [{ // 自smart-doc 1.8.5开始你可以使用自定义类覆盖其他类做文档渲染,使用全类名

      "className": "org.springframework.data.domain.Pageable",

      "replacementClassName": "com.power.doc.model.PageRequestDto" //自定义的PageRequestDto替换Pageable做文档渲染

  }],

  "apiConstants": [{//从1.8.9开始配置自己的常量类,smart-doc在解析到常量时自动替换为具体的值,如:http://localhost:8080/testConstants/+ApiVersion.VERSION中的ApiVersion.VERSION会被替换

      "constantsClassName": "com.power.doc.constants.RequestParamConstant"

  }],

  "responseBodyAdvice":{ //自smart-doc 1.9.8起,ResponseBodyAdvice统一返回设置,可用ignoreResponseBodyAdvice tag来忽略

      "className":"com.power.common.model.CommonResult" //通用响应体

  },

  "sourceCodePaths": [ //设置代码路径,smart-doc默认会自动加载src/main/java, 没有需求可以不设置 1.0.0以后版本此配置不再生效

    {

      "path": "src/main/java",

      "desc": "测试"

    }

  ]

}

3,通过上面两个步骤完成了smart-doc文档的配置,最后补上请求接口注释和实体类注释即可

接口文档通过扫描注解@RequestMapping识别模块,@PostMapping,@GetMapping识别接口,通过注释来完成接口文档的编写。


4,最后通过maven命令完成文档构建,我这里通过idea自带工具完成构建


5,最后完成效果图


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容