当前位置: 首页 > 科技观察

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

时间:2023-03-15 22:45:59 科技观察

最近前端一直反映Swagger读接口信息很不爽,于是我花了两个小时把Swagger干掉,用传说中比较好用的YApi。今天简单分享一下经验。Swagger和YApi其实我个人觉得Swagger没什么问题。后端集成方便快捷,但UI不好,代码对Java侵入性太大。除了解决这些问题,swagger接口YApi还有权限管理、团队协作、自动化测试、支持OpenApi规范等等。YApi接口YApi与Swagger最大的区别在于YApi需要导入文档(虽然也可以通过Swagger轮询的方式导入),Swagger可以自动发现。安装这里就不细说了,官方文档说的很清楚。您可以选择命令行部署、可视化部署或使用Docker部署。推荐内网部署,毕竟大多数API文档都是敏感的。文档注释YApi的文档解析基于Java注释规范,无代码入侵!但这需要我们按照Javadoc规范编写文档注释,这是使用YApi的前提。接口文档分为以下部分。接口类注释下面是接口类注释的基本格式。第一行将显示为菜单,尽可能短;第二行是接口描述,用于描述接口的功能和细节。/***接口类名*

*接口备注/说明**@authorfelord*@sincev1.0*/@RestController@RequestMapping("/foo")publicclassFooController{//省略}和@module、@copyright中事实上,你不需要写任何东西。参数注释输入和输出参数的注释与JSR-303结合使用非常有效。/***账户基本信息**@authorfelord*@sincev1.0*/@DatapublicclassUserInfoDetail{/***用户名**配合JSR303注解声明该字段的约束方法【必填】*/@NotBlankprivateStringusername;/***真实姓名*/privateStringrealName;/***手机号码*/privateStringphoneNumber;/***gender-1unknown0female1male**使用@see说明该字段的取值来源*@seeGenderType#value()*/privateIntegergender;/***昵称*/privateStringnickName;/***微信ID*使用{@codeDeprecated}表示以后会丢弃字典*/@DeprecatedprivateStringwechatAccount;/***邮箱*/privateStringemail;}接口方法注解入参如果是复杂对象,注解由@link引用,@RequestBody会指定Content-Type为application/json。/***新增用户信息**@paramuserInfoDetail用户信息参数{@linkUserInfoDetail}*@return{@linkBoolean}*/@PostMapping("/bar")publicbooleanddetail(@RequestBodyUserInfoDetailuserInfoDetail){returntrue;}post请求对应样式if参数是原始类型或者String,可以这样写,@RequestParam有奇效。/***获取用户信息**@paramnamename*@paramageage*@return{@linkUserInfoDetail}*/@GetMapping("/sam")publicUserInfoDetaildetailBySamples(@RequestParamStringname,Integerage){returnnewUserInfoDetail();}获取对应的request样式导入文档YApi支持Swagger、Postman、JSON等多种方式导入文档。不过个人更喜欢使用插件导入,IntellijIDEA中推荐easy-yapi。导入时,定位到对应的Controller,使用快捷键Alt+Ins调出快捷菜单。呼出快捷菜单选择ExportYapi,第一个选择会让你输入YApi的服务器地址,也会让你输入对应项目的token字符串。依次填写token字符串后,生成的文档将被解析并同步到YApi服务器。结果如上图所示。然后您可以配置权限并将其分配给组成员。如果有文件更新,重复上述步骤即可。YApi提供了几种策略,你可以选择是否覆盖。YApi提供的功能比Swagger多。我仍在探索细节。如果有什么有趣的,我会在稍后与大家分享。请多加注意。本文转载自微信公众号“码农小胖哥”,可通过以下二维码关注。转载本文请联系码农小胖公众号。