Yapi神器EasyYapi和MybatisPlus工程整合使用附配置文件

前言

EasyApi支持检索项目代码中的注释,注解等信息,自动生成接口文档。
本文主要介绍 EasyApi 的使用和 Mybatis-Plus 及其分页插件 Page 与 EasyApi 整合后,接口文档出现问题的解决方案。
值得一提的是,EasyYapi的作者对 issue 的维护十分的积极且热心,同学们可以去 github 为他点 star。
注意:EasyApi虽然方便,可以极大减少后端同学的工作量,但是,请各位同学务必对自己接口认真负责的检查。

作者 Github 仓库地址: https://github.com/tangcent/easy-yapi

MybatisPlus整合

关注这部分内容的同学,请直接点击跳转

安装EasyYapi并导出接口文档

原料:

  • idea
  • Java工程

根据本文档配置后依旧无法使用的同学,请移步官方文档

1.打开IDEA设置并下载插件EasyYapi

Preferences -》 Plugins -》 EasyYapi
idea EasyApi插件下载

2.登陆Yapi,获取Yapi中项目token

具体项目 -》 设置 -》 token配置 -》 工具标识 -》 token
获取Yapi项目token

Yapi如何部署

3.idea插件配置

server: 配置你的Yapi 服务访问路径
tokens: 配置 Java 项目名与 Yapi token 之间的映射关系。用 ‘=’ 分割

idea插件配置

4.打开Java项目代码中的Controller,右键空白处,导出接口文档。
  • 选择 Export Yapi 即可导出当前类的所有接口文档
  • 选择 Export Api 可以导出单个方法的接口文档

controller导出Yapi

5.校验Yapi导出

去Yapi项目中查看接口是否添加成功

Yapi导出成功

代码侧适配

项目结构

项目结构是简单套了一个DDD模型, WEB 接口是对人员的 Crud

Java项目结构

实体类

Po, Qo, Vo都是一样的,不多占用篇幅了。

import lombok.Data;

/**
 * @author: z_true
 * @date: 2022/6/23 14:52
 * @version: 1.0.0
 */
@Data
public class PersonPo {
    /**
     * id
     */
    private Long id;

    /**
     * 姓名
     */
    private String name;
}
枚举类

人员可以配置性别,这里使用枚举,一会儿可以验证枚举能否正常解析

package com.ztrue.test.springboottest.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author: z_true
 * @date: 2022/6/23 15:04
 * @version: 1.0.0
 */
@Getter
@AllArgsConstructor
public enum GenderEnums {
    /**
     * 男
     */
    Male(0, "男"),
    /**
     * 女
     */
    Female(1, "女")
    ;

    @EnumValue
    @JsonValue
    private Integer code;
    private String desc;
}
Controller

演示 Controller 代码

/**
 * 人员
 *
 * @author: z_true
 * @date: 2022/6/23 14:51
 * @version: 1.0.0
 */
@RestController
@RequestMapping
@RequiredArgsConstructor
public class PersonController {
    private final PersonService personService;

    /**
     * 分页
     *
     * 根据分页条件及查询语句,返回封装分页结果集
     *
     * @param page 分页信息
     * @param qo 查询条件
     * @return 分页数据
     */
    @GetMapping
    public Page<PersonVo> page (Page<PersonPo> page, PersonReadQo qo) {
        // 怎么处理的不重要,关键是传入 Qo,结果返回 Vo
        LambdaQueryWrapper<PersonPo> query = new LambdaQueryWrapper<>();
        query.eq(!ObjectUtils.isEmpty(qo.getId()), PersonPo::getId, qo.getId())
                .like(!ObjectUtils.isEmpty(qo.getName()), PersonPo::getName, qo.getName());
        Page<PersonPo> poPage = personService.page(page, query);
        return PageUtil.translatePage(poPage, PersonVo::poToVo);
    }

    /**
     * 列表
     *
     * @param qo qo
     * @return 符合条件的列表
     */
    @GetMapping("/list")
    public List<PersonVo> list (PersonReadQo qo) {
        // 怎么处理的不重要,关键是传入 Qo,结果返回 Vo
        LambdaQueryWrapper<PersonPo> query = new LambdaQueryWrapper<>();
        query.eq(!ObjectUtils.isEmpty(qo.getId()), PersonPo::getId, qo.getId())
                .like(!ObjectUtils.isEmpty(qo.getName()), PersonPo::getName, qo.getName());
        return personService.list(query)
                .stream()
                .map(PersonVo::poToVo)
                .collect(Collectors.toList());
    }

    /**
     * 查询详情
     *
     * 根据人员 id 查询人员详细信息
     *
     * @param id 人员id
     * @return 人员详细信息
     */
    @GetMapping("/{id}")
    public PersonVo getOneDetail (@PathVariable Long id) {
        // 怎么处理的不重要,关键是传入 Qo,结果返回 Vo
        PersonPo po = personService.getById(id);
        return PersonVo.poToVo(po);
    }

    /**
     * 新增
     *
     * @param po 人员信息
     * @return 人员详细信息
     */
    @PostMapping
    public PersonVo save (PersonPo po) {
        personService.save(po);
        return getOneDetail(po.getId());
    }
}
1.代码导出规则

请参考

Java代码Yapi内容
类注释接口分类
Method注释第一行接口名
Method注释后几行接口备注
Qo中成员注释接口Request参数
Vo中成员注释接口Reponse返回值

更多高级用法

2.自定义导出规则适配MybatisPlus-Page

在 Java 项目根目录下,创建 .easy.api.yml 文件。
这份配置文件整合了实际生产使用过程中遇到的 Mybatis-Plus 整合后发生的一系列不易阅读的问题(各位同学可以导出没有配置过 ‘.easy.api.yml’ 的版本试试)。

Github issue:

如果有个性化配置需求,请阅读EasyYapi-可用配置规则

# 解决项目中使用 MybatisPlus 中 com.baomidou.mybatisplus.extension.plugins.pagination.Page 的包作返回值,导致导出接口信息过多且杂乱无章的问题
api:
  param:
    parse:
      before: groovy:session.set("isParam",true)
      after: groovy:session.remove("isParam")

json:
  cache:
    # 必须开启
    disable: true
  rule:
    field:
      ignore[com.baomidou.mybatisplus.extension.plugins.pagination.Page#records]: groovy:session.get("isParam")

field:
  ignore:
    # 排除 baomidou.Page<> 接口/对象 中无用的字段
    - orders
    - optimizeCountSql
    - searchCount
    - countId
    - maxLimit
    - optimizeJoinOfCountSql
    # 排除 jackson 和 gson 中的忽略字段
    - "@com.fasterxml.jackson.annotation.JsonIgnore#value"
    - "!@com.google.gson.annotations.Expose#serialize"

  name[com.baomidou.mybatisplus.extension.plugins.pagination.Page#records]: data
#  name:
#    - groovy:(it.defineClass().name() == "com.baomidou.mybatisplus.extension.plugins.pagination.Page"&&it.name()=="records")?"data":null
3.验证接口

分页接口

分页接口
查询列表接口
列表接口
根据人员 ID 查详情接口
id是通过解析 java 代码中的 @PathVariable

根据ID查询详情接口

新增接口
新增接口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot和Yapi是两个不同的框架,Spring Boot是一个基于Java语言的开发框架,用于快速创建Web应用程序,而Yapi是一个接口管理工具,用于管理和维护API接口文档。 要在Spring Boot中整合Yapi,可以使用YapiAPI接口来将API接口文档上传到Yapi服务器中。以下是整合步骤: 1. 安装Yapi服务器并创建项目。可以参考Yapi官方文档进行安装和创建项目。 2. 在Spring Boot应用程序中添加Yapi相关依赖。可以使用以下Maven依赖: ```xml <dependency> <groupId>com.github.wujiuye</groupId> <artifactId>yapi-sync-maven-plugin</artifactId> <version>1.0.0</version> </dependency> ``` 3. 在Spring Boot应用程序中添加Yapi配置。可以在application.properties文件中添加以下配置: ```properties yapi.url=http://localhost:3000 # Yapi服务器地址 yapi.project.id=1 # Yapi项目ID yapi.token=abc123 # Yapi项目Token ``` 4. 在Spring Boot应用程序中添加Yapi上传插件。可以使用以下Maven插件: ```xml <plugin> <groupId>com.github.wujiuye</groupId> <artifactId>yapi-sync-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <id>upload-to-yapi</id> <phase>install</phase> <goals> <goal>upload</goal> </goals> </execution> </executions> </plugin> ``` 5. 在Spring Boot应用程序中添加API接口文档注释。可以使用以下注释格式: ```java /** * @api {请求方法} /接口路径 接口名称 * @apiDescription 接口描述 * @apiParam 参数名 参数类型 参数描述 * @apiSuccess 返回参数类型 返回参数描述 * @apiError 错误码 错误描述 */ ``` 6. 在Spring Boot应用程序中编写API接口代码。可以使用Spring MVC或Spring WebFlux等框架编写API接口代码。 7. 在Spring Boot应用程序中生成API接口文档。可以使用Swagger或Springfox等框架生成API接口文档。 8. 在Spring Boot应用程序中上传API接口文档到Yapi服务器。可以使用以下命令: ```bash mvn yapi-sync:upload ``` 9. 在Yapi服务器中查看API接口文档。可以登录Yapi服务器并查看项目中的API接口文档。 注意:在上传API接口文档到Yapi服务器之前,需要确保Yapi服务器已经启动并且配置信息正确。同时,需要确保API接口文档的注释信息正确无误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值