type
Post
status
Published
date
Jun 25, 2021
slug
summary
和 Swagger 相比,能做到几乎零代码侵入的自动 API文当生成和调试
所有的注释都基于 Java Doc 格式的注释
tags
项目方案
category
技术分享
icon
password
介绍
和 Swagger 相比,能做到几乎零代码侵入的自动 API文当生成和调试
所有的注释都基于 Java Doc 格式的注释
仓库:
YMFE/yapi
部署
- 环境准备:
- node.js
- mongodb
- 安装
npm install -g yapi-cli --registry https://registry.npm.taobao.org yapi server
- 使用 pm2 管理服务
npm install pm2 -g //安装pm2 cd {项目目录} pm2 start "vendors/server/app.js" --name yapi //pm2管理yapi服务 pm2 info yapi //查看服务信息 pm2 stop yapi //停止服务 pm2 restart yapi //重启服务
插件安装
在 IDEA 中安装 Easy Yapi 插件
从部署的 Yapi 服务中:设置-token 配置获取 token,配置在插件中

基本使用
注释介绍
详情请参见 文档
类注释
@module给 API 分组(不同项目)
缺省:当前模块/项目名
@ignore忽略整个类,不进行解析
方法注释
@api设置 API 名称
缺省:注释的第一行
@folder设置 API所属文件夹的名称
缺省:api所在类名
@ignore忽略当前方法,不进行解析
实体注释
@JsonProperty("xxx")设置输入输出的字段名- 放在实体属性上
- 用于json中字段名与类中字段名不一致
@JsonIgnore忽略字段(设置某些字段不出现在json中,或不需要请求时给出)
参考示例
接口
/** * 分类名称 * 分类备注/描述 * * @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){ ... } ... }
实体
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; ... }
Relate Posts