0
点赞
收藏
分享

微信扫一扫

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇


SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API

师傅:徒儿,前几天和你讲的EasyYapi用明白没?


SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_YApi_02

悟纤:师傅,基本的使用已经欧了。

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API_03

师傅:不错,不错,没有让师傅失望。

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_字段_04

悟纤:但是我发现还有好多EasyYapi的编写规范,我不清楚。

师傅:那师傅今天就好好你说说~

悟纤:师傅,我已经拿好笔和纸,带上耳朵,准备听你讲了。

师傅:耶,今天咋这么积极呢?

悟纤:带着问题来学习才能有更高的学习效率么。

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_java_05

师傅:不错,这个想法很好,带着目标,才能不迷失方向。

悟纤:那师傅咱就开干呗~~~

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_YApi_06

导读

         在前面的小节中,我们介绍了EasyYapi插件的使用,但在实际项目中,如果只是学习到这里是远远不够的,所以这一节的话,我们会解答前一小节遗留的问题:如何设置参数是必需的以及EasyYapi的进阶使用。

一、EasyYapi的注释规范

         在前面小节中,我们使用EasyYapi插件可以一键发布到YApi平台,在代码中并没有做任何的配置,那么是EasyYapi是如何工作了?

         EasyYapi核心就是抓取到了javadoc的注释。

1.1 类上的注释-分类的信息

         在类上面的注释,对应的是YApi的分类的信息,看下如下代码:

/**
 *
 * 订单管理(分类名称)
 * 对订单的基本操作(分类备注/描述)
 *
 * @module springboot-vide-demo
 * @author 悟纤「公众号SpringBoot」
 * @date 2022-03-21
 * @slogan 大道至简 悟在天成
 */
@RestController
@RequestMapping("/order")
public class OrderController {}

说明:

(1)第一行默认是接口的分类名称。

(2)第二行到第一个以@开头的行之前的为分类的描述。

(3)@module用于分类api:

n  导出postman时 , 每个module将作为一个单独的文件夹

n  导出yapi时 , 每个module需要配置相应的token, 即对应一个yapi中的项目

n 默认情况下取当前模块名(单模块项目取项目名)

所以当要导出到YApi的时候,那么@module就是对应的YApi配置的项目。至于说项目的名称叫什么这个不重要,重要的是项目对应的token:

这里我们重新定义了@module为在YApi设置的项目<多音短视频项目>,那么在发布的时候,就需要填写对应的Token(token怎么找,在上一节有说过):

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_java_07

         这样就会发布到<抖音音短视频项目>:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_java_08

特别说明:没有特殊情况下,这个@module就不要配置了。

         另外我们可以看下分类的备注:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API_09

1.2 方法上的注释-接口信息

         方法上的注释,对应YApi的接口信息,看如下代码:

/**
 * 测试方法1(api名称)
 * 这个是测试方法的描述(api描述)
 *
 * @param param1 参数1的名称或描述
 * @param param2 可以用`@link`来表示当前参数的取值是某个枚举{@link OrderInfo}
 * @param param3 参数3的名称或描述
 * @return 响应描述
 */
@RequestMapping("/method1")
public String method1(long param1,
                      @RequestParam  String param2,
                      @RequestParam(required = true,defaultValue = "defaultValueOfParam3") String param3){
    return "SUCCESS";
}

(1)第一行默认是接口的名称。

(2)第二行到第一个以@开头的行之前的为接口的描述。

(3)@param 是参数的信息

(4)@return 是返回的信息

         看下对应的YApi的显示:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API_10

         点击进去看下详情:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_字段_11

         这里我们能看出如果参数要默认是必须的话,那么使用注解@RequestParam即可实现了。

1.2 方法上的参数是引用类型

         我们的saveOrder的参数是引用类型:

我们的saveOrder的参数是引用类型:
/**
 *  保存订单
 * @param orderInfo
 * @return
 */
@RequestMapping("/saveOrder")
public OrderInfo saveOrder(OrderInfo orderInfo){
    return orderInfo;
}

         对应的OrderInfo:

/**
 * 订单信息
 *
 * @author 悟纤「公众号SpringBoot」
 * @date 2022-03-21
 * @slogan 大道至简 悟在天成
 */
public class OrderInfo {
    private int oid;
    private int uid;
    private int shopId;
    private Date createTime;

    public int getOid() {
        return oid;
    }

    public void setOid(int oid) {
        this.oid = oid;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public int getShopId() {
        return shopId;
    }

    public void setShopId(int shopId) {
        this.shopId = shopId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

         这样的情况下,我们在YApi得到的结果是:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API_12

         明显这里的参数的字段都没有备注,以及是否必须都是否。对于这个问题,我们只需要在OrderInfo上进行添加即可注释即可,对于是否必须,需要使用到注解@NotNull,那么需要添加依赖(Spring Boot项目):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

         OK,好了整体的代码如下:

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 订单信息
 *
 * @author 悟纤「公众号SpringBoot」
 * @date 2022-03-21
 * @slogan 大道至简 悟在天成
 */
public class OrderInfo {
    /**
     * 订单的id
     */
    @NotNull
    private int oid;
    @NotBlank
    private int uid;//创建订单的用户(注释也可以写在这里)
    @NotNull
    private int shopId;//商品的id.
    private Date createTime;//创建时间

    public int getOid() {
        return oid;
    }

    public void setOid(int oid) {
        this.oid = oid;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public int getShopId() {
        return shopId;
    }

    public void setShopId(int shopId) {
        this.shopId = shopId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}

说明:如果使用javax.validation的话,可以使用@NotBlank/@NotNull表示字段必须。

         看下效果:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_spring boot_13

二、EasyYapi的Call Api

打开项目中的包含api的文件, 右键文件内容选择选择Call Api, 即可通过窗口进行api请求:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_字段_14

         好像不是很好用。

三、EasyYapi进阶使用

3.1 @ignore忽略API

         当在接口注释使用 @ignore时候,导出被忽略:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_YApi_15

3.2字段被废弃

用注释`@deprecated`来表示字段被废弃:

/**
 * 创建时间
 * @deprecated
 */
private Date createTime;

YApi显示效果:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_java_16

         当然在属性上添加注解@Deprecated也有类似的效果:

/**
 * 创建时间
 */
@Deprecated
private Date createTime;

YApi显示效果:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_spring boot_17

         细观察微微还是有不同的区别的,少了一个换行,O(∩_∩)O哈哈~

3.3 本地配置文件

支持的规则(截取一部分):

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_字段_18

3.3.1 如何配置

         将配置文件添加到项目或模块根目录中:  

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_YApi_19

         这里我们使用.easy.api.config的文件,在项目根目录进行创建:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API_20

温馨提示:.不能少。

3.3.2 api.name

用于设置API名称

缺省情况下,默认使用api注释的第一行作为API的名称

         我们在配置文件.easy.api.config添加配置:

# read api name from tag `api.name`
api.name=#api.name

         那么就可以在注解上进行使用:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_java_21

说明:当配置了@api.name之后,就不需使用第一行作为API的名称了;当未配置@api.name的话,使用注释的第一行作为API的名称。

3.3.3 api.status

         这个就是状态了,默认都是已完成的:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_字段_22

         那么要修改未完成如何操作:

                   我们在配置文件.easy.api.config添加配置:

#yapi status
api.status[#undone]=undone
api.status[#todo]=undone

         那么就可以在注解上进行使用:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_spring boot_23

         在YApi查看的结果(要发布一下哦):

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_java_24

3.3.4 field.default.value

         用于设置字段的默认值,支持的版本v1.7.1+。

(1)原生编码支持

         默认的所有含有默认初始值的字段,取其默认初始值. 如:

private short status = -1;

         看了下,只在返回数据有效果,并不是参数:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_YApi_25

(2)使用配置:

field.default.value=#default

         然后在注释上进行使用@default:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_YApi_26

         看下效果:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_字段_27

         请求参数和返回数据都生效了。

         在运行的界面也是看到是-2:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_spring boot_28

3.3.4 field.demo

字段示例信息:

field.demo=#demo

         使用:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_spring boot_29

         效果:

SpringBoot使用EasyYapi对代码0侵入实现API接口一键发布到YApi的进阶使用 - 第423篇_API_30

         所以这里可以总结出field.demo配置的是请求参数的示例,field.default.value配置的是返回参数的默认值;当field.demo没有配置的时候会使用field.default.value配置的值。

         其它的配置项大家可以根据文档自行研究。

https://easyyapi.com/setting/rules/field_required.html

结束语

         EasyYapi不仅于此,还有很多需要大家自行进行研究的。正所谓师父领进门,修行靠自身。

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。


举报

相关推荐

0 条评论