了解ApiExtra参数【重要】
>w **easyapi**在生成接口文档时依次是->扫描控制器->扫描控制器下的接口->扫描接口方法->解析方法参数。在这整个过程中,**easyapi会将自己扫描和解析到的类、方法、参数以及他们的源码放在ApiExtra对象中**,以供拦截器使用。举个例子,你可以在解析某个参数对象字段的时候通过ApiExtra对象来确定当前是在解析哪个控制器下的哪个接口中的参数,让我们一起来了解一下**ApiExtra**对象属性吧
```java
public class ApiExtra {
//控制器类
private Class controllerClass;
//控制器源码信息
private ClassComment controllerComment;
//数据库存储的控制器信息
private DBModuleControllerEntity dbController;
//接口方法
private Method method;
//接口源码信息
private MethodComment methodComment;
//数据库存储的接口信息
private DBModuleInterfaceEntity dbInterface;
//参数类
private Parameter parameter;
//返回参数
private Type returnType;
//当前解析的参数类型
private Class modelClass;
//类注释
private ClassComment modelComment;
//当前解析的参数字段
private Field modelField;
//字段源码信息
private FieldComment fieldComment;
}
```
```java
public class DBModuleControllerEntity extends BaseDbEntity {
@ApidocComment("所属模块id")
private Long moduleId;
@ApidocComment("控制器全类名")
private String className;
@ApidocComment("控制器名称")
private String showName;
@ApidocComment("控制器说明")
private String description;
@ApidocComment("控制器作者")
private String author;
@ApidocComment("控制器名称拼音")
private String pinyin;
@ApidocComment("统一请求的父路径")
private String apiPath;
@ApidocComment("排序值,值越小,排名越靠前")
private Integer sort = 0;
@ApidocComment("源代码")
private String source;
@ApidocComment("搜索字段")
private String searchTags;
@ApidocComment("是否展示 0-否 1-是")
private Integer show;
}
```
```java
public class DBModuleInterfaceEntity extends BaseDbEntity {
@ApidocComment("模块id")
private Long moduleId;
@ApidocComment("控制器id")
private Long controllerId;
@ApidocComment("作者")
private String autor;
@ApidocComment("是否展示 0-否 1-是")
private Integer show;
@ApidocComment("控制器名称")
private String controllerClass;
@ApidocComment("接口方法名")
private String methodName;
@ApidocComment("接口唯一标识")
private String unique;
@ApidocComment("接口版本 0-最新版本 1-待更新")
private Integer upgradeStatus;
@ApidocComment("更新策略: 0-覆盖更新 1-增量更新 2-跳过更新")
private Integer renewType;
@ApidocComment("接口标题")
private String showName;
@ApidocComment("接口标题拼音")
private String pinyin;
@ApidocComment("接口说明")
private String description;
@ApidocComment("请求地址")
private String requestUrl;
@ApidocComment("请求方式 0-全部 1-get 2-post ")
private Integer requestMethod;
@ApidocComment("请求体类型 0-form 1-json体 2-文件上传 3-XML 4-RAW")
private Integer bodyType;
@ApidocComment("排序值")
private Integer sort = 0;
@ApidocComment("源代码")
private String source;
@ApidocComment("搜索字段")
private String searchTags;
@ApidocComment("快搜标签")
private String customTags;
@ApidocComment("是否开启请求参数外包装 0-不是 1-是")
private Integer enableReqPackage;
@ApidocComment("是否开启返回参数外包装 0-不是 1-是")
private Integer enableResPackage;
@ApidocComment("原始数据,用来判断是否被改变的")
private String origin;
}
```
```java
public class JavaSourceComment {
/**
* 名称
*/
private String name;
/**
* 处理过后的注释
*/
private String comment;
/**
* 详细注释,根据@符号进行拆分
*/
private List<CommentDetail> commentDetails;
/**
* 最开始的原始注释
*/
private String commentOriginal;
/**
* 访问属性(public、private。。。)
*/
private String modifyers;
/**
* 源码片段
*/
private String source;
/**
* 每行源码内容
*/
private List<String> lines;
/**
* 注解信息
*/
private List<AnnotationComment> annotations = new ArrayList<>();
}
```
#### Comment : 为源码数据,在ApiExtra对象中凡是*Comment的参数均为源码参数,参数中都包含下列信息
> -->**name** : `类名称`
-->**modifyers** : `访问权限,例如private、public等`
-->**source** : `未处理的源码`
-->**lines** : `将源码按行切割并组成的集合`
-->**comment** : `处理后的类注释`
-->**commentOriginal** : `源码注释`
-->**commentDetails** : `详细注释,解析包含@的key和val`
-->-->**key** : `注释的key,比如@author 小明,解析后的key为author`
-->-->**value** : `注释的val,比如@author 小明,解析后的value为小明`
-->**annotations** : `类注解源码集合`
-->-->**annotationName** : `注解名称`
-->-->**annotationComment** : `注解注释`
-->-->**annotationSource** : `注解源码`
-->-->**pairs** : `注解参数源码集合`
-->-->-->**name** : `注解参数名称`
-->-->-->**value** : `注解参数值`
-->**extendsClassName** : `继承类的类名`
-->**implClassNames** : `实现的接口类名`
-->**packageName** : `包名`
-->**fields** : `类属性字段集合,内部包含以上全部属性`
-->**methods** : `类方法集合,内部包含以上全部属性,同时拥有特殊属性`
-->-->**parameters** : `方法参数源码集合,包含以上全部属性`
-->-->**returnType** : `方法返回值类型源码`
-->-->**returnComment** : `方法返回注释`
### ApiExtra : 对象属性
> **controllerClass** : `当前解析链操作的控制器类`
**controllerComment** : `源码数据,控制器源码解析类`
**method** : `当前解析链操作的接口方法`
**methodComment** :`源码数据,接口源码解析类`
**parameter** : `当前解析链操作的方法参数`
**returnType** : `当前解析链操作的方法返回值类型`
**modelClass** : `当前解析链操作的参数实体类`
**modelComment** :`源码数据,实体参数解析类`
**modelField** : `当前解析链操作的参数实体属性`
**fieldComment** : `源码数据,实体参数属性解析类`
**dbController** : `easyapi存储的控制器实体,DBModuleControllerEntity 类型`
**dbInterface** : `easyapi存储的接口实体,DBModuleInterfaceEntity 类型`