Apifox IDEA 插件
  1. 进阶使用
Apifox IDEA 插件
  • 快速上手
    • 介绍
    • 安装
    • 实战使用
    • 获取访问令牌
    • 获取项目 ID
    • 导出API
    • 常见问题 FAQ
  • 配置
    • 如何使用配置?
    • 使用项目内配置文件
    • 其他
    • 配置文档
  • 进阶使用
    • 注释规范说明
    • 框架支持
    • 支持的回调--暂不用
  1. 进阶使用

注释规范说明

注释规范说明#

注释规范#

Javadoc(Java)#

wiki
oracle
baike

KDoc(Kotlin)#

kotlin-doc

ScalaDoc(Scala)#

scaladoc

Java 注释 Demo#


/**
 * 分类名称
 * 分类备注/描述
 *
 * @module 归属项目
 */
@RestController
@RequestMapping(value = "/pathOfCtrl")
public class MockCtrl {

    /**
    * api名称
    * api描述
    * @param param1 参数1的名称或描述
    * @param param2 可以用`@link`来表示当前参数的取值是某个枚举{@link some.enum.or.constant.class}
    * @param param3 当目标枚举字段与当前字段名不一致,额外指定{@link some.enum.or.constant.class#property1}
    * @return 响应描述
    */
    @RequestMapping(value = "/pathOfApi1")
    public Result methodName1(long param1,
                      @RequestParam String param2,
                      @RequestParam(required = false, defaultValue = "defaultValueOfParam3") String param3){
        ...
    }


    /**
    * 默认使用`application/x-www-form-urlencoded`,
    * 对于`@RequestBody`将使用`application/json`
    * 可以用注解`@Deprecated`来表示api废弃
    * 也可以用注释`@deprecated`
    *
    * @deprecated 改用{@link #methodName3(String)}
    */
    @Deprecated
    @RequestMapping(value = "/pathOfApi2")
    public Result methodName2(@RequestBody MockDtoOrVo jsonModel){
        ...
    }

    /**
    * 所有注释或者参数描述中都可以使用`@link`来引用另一个API
    * 例如:
    * 请先访问{@link #methodName4(String)}

    * 也可以使用`@see`来引用另一个API
    *
    * @param param1 参数1的名称或描述 可以从{@link #methodName5(String)}中获得
    * @see #methodName6(String)
    * @deprecated 改用{@link #methodName7(String)}
    */
    @Deprecated
    @RequestMapping(value = "/pathOfApi3")
    public Result methodName3(long param1){
        ...
    }

    ...
}

Model(DTO/VO) Demo#

public class MockDtoOrVo {

    /**
     * 字段注释
     */
    private Long field1;

    private Double field2;//注释也可以写在这

    /**
     * 使用@see来说明当前字段的取值是某个枚举
     * @see some.enum.or.constant.class
     */
    private int field3;

    /**
     * 当目标枚举字段与当前字段名不一致,额外指定
     * @see some.enum.or.constant.class#property1
     */
    private int field4;

    /**
     * 可以用注解`@Deprecated`来表示字段被废弃
     * 也可以用注释`@deprecated`
     * @deprecated It's a secret
     */
    @Deprecated
    private int field5;

    /**
     * 如果使用javax.validation的话
     * 可以使用@NotBlank/@NotNull表示字段必须
     */
    @NotBlank
    @NotNull
    private String field6;

    ...
}

支持的规则#

    规则的key规则目标(上下文it)版本规则描述
    api.namemethodv1.4.1+设置api的名称
    api.tagsmethodv0.7.5+标记接口tag
    api.statusmethodv0.8.0+标记接口status(应返回done/undone)
    class.is.ctrlmethodv2.0.8+允许导出指定类中的api
    class.prefix.pathclassv1.3.0+设置API请求前缀
    constant.field.ignorefieldv1.3.8+忽略常量字段
    enum.use.customclassv2.4.1+用于设置使用@see枚举类型时的默认取值字段, 优先级高于enum.use.by.type
    enum.use.by.typeclassv2.4.1+用于设置使用@see枚举类型时的默认使用类型一致的字段, 优先级低于enum.use.custom
    enum.use.ordinalclassv2.2.1+用于设置使用@see枚举类型时的默认使用ordinal作为取值
    enum.use.nameclassv2.2.1+用于设置使用@see枚举类型时的默认使用name作为取值
    field.default.value-v1.7.1+用以设置字段的默认值
    field.example-v1.9.3+用以设置字段的示例值
☆field.descriptionfieldv0.7.2+字段的额外注释
    field.ignorefieldv2.0.0+忽略字段(设置某些字段不出现在json中,或不需要请求时给出)
☆field.mockfieldv1.4.2+生成yapimock信息
    field.mock.resolveProperty-v1.4.2+用以开关是否解析field.mock规则结果中的占位符
    field.namefieldv0.7.2+设置输出的字段名(用于json中字段名与类中字段名不一致)
    field.requiredfieldv0.7.3+字段是否为必须(即不可为空)
    folder.namemethodv1.9.2+设置api所属文件夹
    ignoreclass/methodv0.7.2+忽略API
☆json.rule.convert-v0.7.2+用于设置某些类型转换为其他类型处理, 通常用于使用了Spring的自定义类型转换器的情况
    json.rule.enum.convertclassv1.2.0+用于枚举类型的特殊转换
    json.rule.field.ignorefieldv0.7.2+忽略字段(设置某些字段不出现在json中,或不需要请求时给出) 已废弃, 使用field.ignore代替
    json.rule.field.namefieldv0.7.2+设置输出的字段名(用于json中字段名与类中字段名不一致)
    mdoc.class.filterclassv0.9.5+选择哪些类可以导出方法文档(rpc)
    mdoc.method.pathmethodv0.9.5+设置方法文档(rpc)的路径
    mdoc.method.http.methodmethodv0.9.5+设置方法文档(rpc)HTTP请求方式
    method.additional.headermethodv1.3.0+API需要额外的header
{name: "header name",value: "",desc: "",required:false, example:""}
    method.additional.parammethodv1.3.0+API需要额外的参数
{name: "param name",value: "defaultValue",desc: "",required:false}
    method.content.type-v1.9.7+用以设置API请求的content-type
    method.default.http.methodmethodv1.4.2+设置默认的api的HttpMethod
    method.descriptionmethodv0.7.2+方法(api)的额外注释
☆method.return.mainmethodv1.3.8+设置返回值的核心主体
☆method.returnmethodv1.6.1+设置返回值的类型
    moduleclassv0.7.2+为api分组
    param.default-valueargv1.3.0+API参数的默认值
    param.example-v1.9.3+用以设置参数的示例值
    param.descriptionargv1.3.0+参数的额外注释
    param.typeargv2.0.0+用于设置API参数在HTTP请求中的类型
    param.ignoreargv1.3.0+忽略API参数
    param.requiredargv0.7.3+API参数是否为必须(即不可为空)

支持的简单配置#

简单配置无上下文
    规则的key版本配置类型规则描述示例
    devv2.2.1+bool启动开发模式,打印更详细的日志dev=true
    max.deepv2.3.6+int解析json时最大深度,默认6max.deep=8
    max.elementsv2.3.6+int解析json时最大字段数,默认256max.elements=512
    json.cache.disablev2.1.0+bool禁用json解析缓存json.cache.disable=true
    http.timeOutv2.1.0+inthttp请求的超时时间(s),优先级高于settinghttp.timeOut=5
    auto.format.urlv2.1.0+bool导入yapi时是否格式化url,确保url以/开始,且将[a-zA-Z0-9-/_:.{}?=!]之外的字符替换为/auto.format.url=false
    field.mock.resolvePropertyv2.1.0+bool是否处理yapi mock信息中的占位符${xxx}field.mock.resolveProperty=true
    api.tag.delimiterv2.1.0+stringyapi tag的分割符, 默认为,api.tag.delimiter=,#

支持的回调#

部分回调方法中可能没有it, 但可能会有附加的上下文供使用
    规则的key规则目标(上下文it)附加上下文版本规则描述
    api.class.parse.beforeclass无v2.2.8+解析api前回调
    api.class.parse.afterclass无v2.2.8+解析api后回调
    api.method.parse.beforemethod无v2.2.8+解析api方法前回调
    api.method.parse.aftermethod无v2.2.8+解析api方法后回调
    api.param.parse.beforeparam无v2.2.8+解析api参数前回调
    api.param.parse.afterparam无v2.2.8+解析api参数后回调
    export.aftermethodapiv2.0.1+每个api导出完成后回调
    http.call.before无requestv1.9.0+http请求前回调
    http.call.after无request, responsev1.9.0+http请求后回调
    json.class.parse.beforeclass无v2.2.8+解析类型前回调
    json.class.parse.afterclass无v2.2.8+解析类型后回调
    json.field.parse.beforefield无v2.2.8+解析类型字段前回调
    json.field.parse.afterfield无v2.2.8+解析类型字段后回调
    json.method.parse.beforemethod无v2.2.8+解析类型方法 (getter
    json.method.parse.aftermethod无v2.2.8+解析类型方法(getter
    yapi.export.before无无v2.0.1+导出到yapi之前回调

NOTES: 本地文件配置

规则语法#

简单规则#

# 读取注释上的tag
如 #fake对应取的注释如下:
@ 读取注解
@xxx 读取方法或字段上的注解,如@org.springframework.web.bind.annotation.RequestMapping
@RequestMapping("path")
public class FakeClass{...}
@xxx#yyy 读取方法或字段上的注解中的attr值,如@org.springframework.web.bind.annotation.RequestMapping#value
@RequestMapping(value = "path")
public class FakeClass{...}
字面量
boolean如: api.open=true
string如: api.status=done

高级脚本规则#

由于JDK11后js引擎可能缺失, 故推荐使用groovy作为首选
groovy规则为 groovy:groovyScript
js规则为 js:jsScript

导出效果#

列表页
接口名称接口路径接口分类状态tag
Mock String/mock/stringMock Apis已完成swagger
test
详情页
基本信息
接口名称: Mock String               创 建 人:  admin
状  态: 已完成                 更新时间:  2019-12-07 22:31:28
Tag :    swagger, test
接口路径: GET /mock/string
Mock地址: http://127.0.0.1:3000/mock/172/mock/string

api.tag.delimiter#

用于分割tags, 默认tag的分隔符是,\n
如规则得到的tag是a,b,则会被切割为[a,b]
如希望a,b视为一个规则,可以设置api.tag.delimiter=\n,则不再对,进行切割
如希望将a|b|c切割为[a,b,c],可以设置api.tag.delimiter=|\n
如希望将a,b|c,d切割为[a,b,c,d],可以设置api.tag.delimiter=|,\n
修改于 2022-12-14 09:40:25
上一页
配置文档
下一页
框架支持
Built with