使用smart-doc ,放弃japidocs,更放弃 swagger
众所周知(真不是人云亦云),swagger强大吗?强大的,但是代码侵入性,太强了!推荐使用 japidocs ,它根据你的注释生成文档!POM<!-- https://mvnrepository.com/artifact/io.github.yedaxia/japidocs --><dependency><groupId>io.github.yedaxia<
·
具体请参考:Documenthttps://smart-doc-group.github.io/#/zh-cn/start/quickstart
众所周知(真不是人云亦云)
swagger强大吗?强大的。但是代码侵入性太强了!
japidocs ,没有代码入侵问题,也很好!
但是有个bug!没有办法传入接口泛型对象。
比如: public ApiOut String (ApiIn)
他无法解析ApiIn,
但可以解析ApiOut
上面两个我都试过了
最后,我选择了smart-doc,废话不多说,直接上代码
1 POM文件,添加插件
<plugin>
<groupId>com.github.shalousun</groupId>
<artifactId>smart-doc-maven-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<!--指定生成文档使用的配置文件-->
<configFile>./src/main/resources/smart-doc.json</configFile>
<!--指定分析的依赖模块(避免分析所有依赖,导致生成文档变慢,循环依赖导致生成失败等问题)-->
<includes>
<!--格式为:groupId:artifactId;参考如下-->
<include>com.alibaba:fastjson</include>
</includes>
</configuration>
<executions>
<execution>
<!--不需要在编译项目时自动生成文档可注释phase-->
<phase>compile</phase>
<goals>
<goal>html</goal>
</goals>
</execution>
</executions>
</plugin>
最好别使用以下方式,我生成出来空文档。
<!-- https://mvnrepository.com/artifact/com.github.shalousun/smart-doc -->
<dependency>
<groupId>com.github.shalousun</groupId>
<artifactId>smart-doc</artifactId>
<version>2.2.1</version>
</dependency>
2 在项目的resources下,创建smart-doc.json
{
"serverUrl": "http://127.0.0.1",
"isStrict": false,
"allInOne": true,
"outPath": "src/main/resources/static/doc",
"createDebugPage": true, //生成测试页面
"projectName": "smart-doc"
}
3 测试接口泛型参数
入参泛型
package com.tenyears.model.common;
/**
* @author helka067
* 调接口时,数据请求格式
*/
@Data
public class ApiRequest<T> {
/**
* 模型
*/
private T data;
/**
* 当前页
*/
private Integer pageIndex = 1;
/**
* 条目
*/
private Integer pageSize= 10;
}
出参泛型
package com.tenyears.model.common;
/**
* Created by Tyler on 2017/6/20.
*/
@Data
public class ApiResult<T> {
/**
* 代码
*/
private String code = 0;
/**
* 信息
*/
private String message = "Ok";
/**
* 模型
*/
private T data;
}
模型
package com.tenyears.webTest.model;
import com.tenyears.model.base.SuperBaseModel;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
* 标签
*/
@Data
public class AdTag {
/**
* 主键
*/
private long tagID;
/**
* 父节点
*/
private long tagParentID;
/**
* 标签名
*/
private String tagName;
}
4,测试接口
package com.tenyears.webTest.controller;
import com.tenyears.model.common.ApiRequest;
import com.tenyears.model.common.ApiResult;
import com.tenyears.web.baseClass.BaseClass;
import com.tenyears.webTest.model.AdTag;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
/**
* @description :
* @auther Tyler
* @date 2021/6/5
*/
/**
* 测试
*/
@RestController
@RequestMapping("api/test")
public class TestController extends BaseClass {
@Value("${isDebug}")
public String isDebug;
/**
* 测试接口
* @return String
* @throws Exception
*/
@RequestMapping(value = "test1", method = RequestMethod.POST)
public String test1() throws Exception {
return "isDebug:"+isDebug;
}
/**
* 广告标签
* @param tag
* @return
* @throws Exception
*/
@RequestMapping(value = "test2", method = RequestMethod.POST)
public ApiResult<AdTag> test2(@RequestBody ApiRequest<AdTag> tag) throws Exception {
return new ApiResult<>();
}
}
5 生成文档
我选择了html,你们随意。
6 效果
随笔:
1 Request-example
对于自动生成的请求示例,有些默认值不是我们要的。
可以通过@mock 标签解决
/**
* 值
* @mock [0,1,2,3,4,5,6]
*/
private String val;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献5条内容
所有评论(0)