package com.dsideal.base; import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.dsideal.base.Plugin.PostmanDocPlugin; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.jfinal.aop.Before; import com.jfinal.core.Controller; import com.jfinal.ext.interceptor.GET; import com.jfinal.ext.interceptor.POST; import io.github.yedaxia.apidocs.DocContext; import io.github.yedaxia.apidocs.Docs; import io.github.yedaxia.apidocs.DocsConfig; import java.io.File; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.*; /** * JApiDocs 无需额外注解的 API 文档生成工具 *
* 源码 https://github.com/YeDaxia/JApiDocs
* 文档 https://japidocs.agilestudio.cn/#/zh-cn/
*
* @author zxd 2022-02-17
*/
public class JApiDocsGenerator {
private static String getHttpType(Before before) {
if (before.value().length > 0) {
for (Class> interceptClass : before.value()) {
if (interceptClass.equals(GET.class)) {
return "GET";
} else if (interceptClass.equals(POST.class)) {
return "POST";
}
}
}
return "UNKNOWN";
}
/**
* 获取指定目录下所有JAVA文件
* @param directory 指定目录
* @return 所有Java文件
*/
public static List
* 如果生成的 api 文档不是预期的,作如下检查:
* 1 必须在 configRoute(Routes me) 中已该方式 me.add("/xx/yy", xx.class, "/"); 定义 Controller
* 2 在需要生成 api 的 Controller 中添加 @ApiDoc 注解
* 3 如果要忽略某 action,在 action 上添加 @Ignore
* https://jfinal.com/share/2528
*
* 在需要生成Doc文档的Controller类上面加上@ApiDoc注解
*
* https://japidocs.agilestudio.cn/#/zh-cn/
*/
public static void main(String[] args) {
//可以限制只生成哪个接口,数组内容为空,则表示生成全部
//String[] generateInterfacesList = {"getWxTj"};
String[] generateInterfacesList = {};
String projectPath = System.getProperty("user.dir");
projectPath = projectPath.replace("\\", "/");
String projectName = projectPath.substring(projectPath.lastIndexOf("/") + 1);
DocsConfig config = new DocsConfig();
String sourceJava = projectPath + "/src/main/java";
config.setProjectPath(sourceJava); // root project path
config.setProjectName(projectName); // project name
String version = "v1.0";
config.setApiVersion(version); // api version
String docPath = projectPath + "/Doc";
config.setDocsPath(docPath); // api docs target path
config.addPlugin(new PostmanDocPlugin());
config.setAutoGenerate(Boolean.FALSE); // auto generate
config.setMvcFramework("JFinal");
Docs.buildHtmlDocs(config); // execute to generate
// 获取项目路径
Map