抱怨Swagger不好用?好吧我换一个好用的

开发 前端
最近前端们一直反映Swagger看接口信息非常不爽,于是我花了俩小时把Swagger干掉,用上了传说中更好用的YApi。今天就简单分享一下心得体会。

[[398313]]

最近前端们一直反映Swagger看接口信息非常不爽,于是我花了俩小时把Swagger干掉,用上了传说中更好用的YApi。今天就简单分享一下心得体会。

Swagger与YApi

其实我个人认为Swagger也没啥不好的,后端集成起来方便快捷,就是UI不行,而且对于Java来说代码的侵入性太高了。

swagger界面

YApi除了解决了这些问题之外还具有权限管理、团队协作、自动化测试、支持OpenApi规范等等。

YApi界面

YApi区别于Swagger的最大不同就是YApi需要导入文档(虽然它也可以通过Swagger轮询导入),而Swagger可以自动发现。

安装这里就不细说了,官方文档说的很清楚。你可以选择命令行部署、可视化部署,也能使用Docker部署。

推荐内网部署,毕竟大部分API文档比较敏感。

文档注释

YApi的文档解析基于Java注释规范,没有代码侵入!但是这就要求我们要按照Javadoc的规范进行书写文档注释,这是使用YApi的前提。一个接口文档分为以下几个部分。

接口类注释

接口类的注释,下面是基本的格式。第一行会作为菜单展示,尽量短小精悍;第二行是接口的描述,用来描述接口的作用和细节。

  1. /** 
  2.  * 接口分类名称 
  3.  * <p> 
  4.  * 接口备注/描述 
  5.  * 
  6.  * @author felord 
  7.  * @since v1.0 
  8.  */ 
  9. @RestController 
  10. @RequestMapping("/foo"
  11. public class FooController { 
  12. // 省略 

还有@module、@copyright什么的其实可以不写。

参数注释

入参和出参的注释,配合JSR-303有奇效哦。

  1. /** 
  2.  * 账户基本信息 
  3.  *  
  4.  * @author felord 
  5.  * @since v1.0 
  6.  */ 
  7. @Data 
  8. public class UserInfoDetail { 
  9.  
  10.     /** 
  11.      * 用户名 
  12.      * 
  13.      * 配合JSR303注解声明此字段的约束方式【必填】 
  14.      */ 
  15.     @NotBlank 
  16.     private String username; 
  17.     /** 
  18.      * 真实姓名 
  19.      */ 
  20.     private String realName; 
  21.     /** 
  22.      * 手机号码 
  23.      */ 
  24.     private String phoneNumber; 
  25.     /** 
  26.      * 性别 -1 未知 0 女性 1 男性 
  27.      * 
  28.      * 使用@see来说明该字段的取值来源 
  29.      * @see GenderType#value() 
  30.      */ 
  31.     private Integer gender; 
  32.     /** 
  33.      * 昵称 
  34.      */ 
  35.     private String nickName; 
  36.     /** 
  37.      * 微信号 
  38.      * 使用{@code Deprecated} 表示字典将来会废弃 
  39.      */ 
  40.     @Deprecated 
  41.     private String wechatAccount; 
  42.     /** 
  43.      * 电子信箱 
  44.      */ 
  45.     private String email; 

接口方法注释

入参为复杂对象的话注释用@link引用,@RequestBody会指定Content-Type为application/json。

  1. /** 
  2.  * 新增用户信息 
  3.  * 
  4.  * @param userInfoDetail 用户信息参数 {@link UserInfoDetail} 
  5.  * @return {@link Boolean} 
  6.  */ 
  7. @PostMapping("/bar"
  8. public boolean detail(@RequestBody UserInfoDetail userInfoDetail) { 
  9.     return true

Post请求对应的样式

如果参数是原始类型类型或者String,可以这样写,@RequestParam有奇效。

  1. /** 
  2.  * 获取用户信息 
  3.  * 
  4.  * @param name 姓名 
  5.  * @param age  年龄 
  6.  * @return {@link UserInfoDetail} 
  7.  */ 
  8. @GetMapping("/sam"
  9. public UserInfoDetail detailBySamples(@RequestParam String nameInteger age) { 
  10.     return new UserInfoDetail(); 

Get请求对应的样式

导入文档

YApi支持Swagger、Postman、JSON等方式导入文档。不过我个人更喜欢使用插件导入,Intellij IDEA中推荐使用easy-yapi。导入的时候定位到对应的Controller,使用快捷键Alt+Ins呼出快捷菜单。

呼出快捷菜单

选择Export Yapi ,首次选择会让你输入YApi的服务器地址,还会让你输入对应项目的token字符串。

token 字符串

 

依次填入后,就会解析生成文档并同步到YApi服务器了,结果就是上面截图中的样子。然后你可以配置权限分配给组员使用了,如果有文档更新重复上面的步骤即可,YApi提供了几种策略,你可以选择覆盖也可以选择不覆盖。YApi提供了比Swagger更丰富的功能,具体我还在探索中,如果有什么好玩的,会在后面分享给大家,还请多多关注。

本文转载自微信公众号「码农小胖哥」,可以通过以下二维码关注。转载本文请联系码农小胖哥公众号。

 

责任编辑:武晓燕 来源: 码农小胖哥
相关推荐

2023-10-25 16:36:06

数字化转型IT系统

2021-05-13 09:27:13

JavaThreadLocal线程

2023-03-13 00:21:21

调试器断点开发者

2014-10-20 10:53:13

ArubaWi-Fi无线网络

2019-09-12 10:10:10

Vim编辑器代码

2020-04-22 10:01:26

Vim编辑器代码

2014-02-21 10:20:40

2019-05-09 18:24:28

Windows 10Windows操作系统

2021-02-17 21:33:39

路由器产品网络

2021-07-28 06:46:25

Windows 操作系统微软

2019-10-15 09:46:46

机器学习人工智能计算机

2014-11-04 10:15:28

Android

2021-07-28 14:32:03

Windows微软

2020-10-19 08:14:58

Windows10

2023-07-14 12:02:29

2020-03-19 14:30:13

Windows触摸板MacBook

2019-10-31 16:10:48

Windows 10Windows技巧

2018-07-23 12:56:07

微信通信朋友圈

2021-08-16 13:44:37

手机电子日本

2023-10-24 08:01:38

String传统
点赞
收藏

51CTO技术栈公众号