gitee地址
https://gitee.com/sunyurepository/smart-doc

官方文档
https://gitee.com/sunyurepository/smart-doc/wikis/%E7%94%9F%E6%88%90%E5%A4%9A%E7%A7%8D%E6%96%87%E6%A1%A3?sort_id=1653105

maven

  1. <dependency>
  2. <groupId>com.github.shalousun</groupId>
  3. <artifactId>smart-doc</artifactId>
  4. <version>1.9.0</version>
  5. <scope>test</scope>
  6. </dependency>
package com.platform;

import com.power.common.enums.HttpCodeEnum;
import com.power.common.util.DateTimeUtil;
import com.power.doc.builder.HtmlApiDocBuilder;
import com.power.doc.constants.DocGlobalConstants;
import com.power.doc.model.*;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;

public class smartDoc {

    /**
     * 访问地址:
     * 生成后可以通过浏览器打开src/main/resources/static/doc/api.htmlHTML页面
     * 或者是启动Spring Boot服务访问http://localhost:8080/doc/api.html 接口文档
     * 如果采用AllInOne模式生成的文档,则访问http://localhost:8080/doc/index.html
     * 修改服务配置:
     * 如果Spring Boot服务配置了spring.resources.add-mappings=false
     * 那么服务器将不会处理静态资源, smart-doc生成的html静态api文档也就不能访问,此时只需要将配置改为true即可。
     * 当然这种配置最好放入配置中心, 真正的生产服务器如果不希望暴露接口文档可以直接设置为false关闭文档。
     */
    @Test
    public void testBuilderControllersApi() {
        ApiConfig config = new ApiConfig();
        config.setServerUrl("http://localhost:11001");

        //设置为严格模式,Smart-doc将降至要求每个Controller暴露的接口写上标准文档注释
        config.setStrict(false);

        //当把AllInOne设置为true时,Smart-doc将会把所有接口生成到一个Markdown、HHTML或者AsciiDoc中
        config.setAllInOne(true);

        //HTML5文档,建议直接放到src/main/resources/static/doc下,Smart-doc提供一个配置常量HTML_DOC_OUT_PATH
        config.setOutPath(DocGlobalConstants.HTML_DOC_OUT_PATH);

        // 设置接口包扫描路径过滤,如果不配置则Smart-doc默认扫描所有的接口类
        // 配置多个报名有英文逗号隔开
        config.setPackageFilters("com.platform.controller");

        //设置公共请求头.如果不需要请求头,则无需设置
//        config.setRequestHeaders(
//                ApiReqHeader.header().setName("access_token").setType("string")
//                        .setDesc("Basic auth credentials").setRequired(true).setSince("v1.1.0"),
//                ApiReqHeader.header().setName("user_uuid").setType("string").setDesc("User Uuid key")
//        );

        //设置错误错列表,遍历自己的错误码设置给Smart-doc即可
        List<ApiErrorCode> errorCodeList = new ArrayList<>();
        for (HttpCodeEnum codeEnum : HttpCodeEnum.values()) {
            ApiErrorCode errorCode = new ApiErrorCode();
            errorCode.setValue(codeEnum.getCode()).setDesc(codeEnum.getMessage());
            errorCodeList.add(errorCode);
        }
        //不需要显示错误码,则可以不用设置错误码。
        config.setErrorCodes(errorCodeList);

        //1.7.9 优化了错误码处理,用于下面替代遍历枚举设置错误码
        //不需在文档中展示错误码则可以不设置。
        config.setErrorCodeDictionaries(
                ApiErrorCodeDictionary.dict().setEnumClass(HttpCodeEnum.class)
                        .setCodeField("code") //错误码值字段名
                        .setDescField("desc")//错误码描述
        );



        //设置文档变更记录,没有需要可以不设置
//        config.setRevisionLogs(
//                RevisionLog.getLog().setRevisionTime("2018/12/15").setAuthor("chen").setRemarks("test").setStatus("create").setVersion("V1.0"),
//                RevisionLog.getLog().setRevisionTime("2018/12/16").setAuthor("chen2").setRemarks("test2").setStatus("update").setVersion("V2.0")
//        );

        long start = System.currentTimeMillis();
        //生成HTML5文件
        HtmlApiDocBuilder.buildApiDoc(config);
        //since 1.8.1版本开始入口方法有变更
        HtmlApiDocBuilder.buildApiDoc(config);
        long end = System.currentTimeMillis();
        DateTimeUtil.printRunTime(end, start);
    }
}

smart-doc自定义注释tag

tag名称 描述
@ignore ignore tag用于过滤请求参数对象上的某个字段,设置后smart-doc不输出改字段到请求参数列表中。关于响应字段忽略的请看忽略响应字段,如果ignore加到方法上,则接口方法不会输出到文档。从1.8.4开始ignore支持添加到controller上进行忽略不想生成文档的接口类。
@required 如果你没有使用JSR303参数验证规范实现的方式来标注字段,就可以使用@required去标注请求参数对象的字段,标注smart-doc在输出参数列表时会设置为true。
@mock 从smart-doc 1.8.0开始,mock tag用于在对象基本类型字段设置自定义文档展示值。设置值后smart-doc不再帮你生成随机值。方便可以通过smart-doc直接输出交付文档。
@dubbo 从smart-doc 1.8.7开始,dubbo tag用于在dubbo的api接口类上添加让smart-doc可以扫描到dubbo rpc的接口生成文档。
@restApi 从smart-doc 1.8.8开始,restApi tag用于支持smart-doc去扫描Spring Cloud Feign的定义接口生成文档。