calmzhu
V2EX  ›  程序员

有人用过 Swagger CodeGen 之类的工具么

By calmzhu at 2020 年 10 月 3 日 · 3312 次点击
  • 定义好 OpenAPI schema 。即可自动生成 REST API 的工具。
  • 单独 model 的 CRUD 就行,不需要数据库的关系。
  • 求祖师爷们砸饭碗

顺便, 人工智能自动写代码上天这么久了。咋样了。

第 1 条附言  ·  2020 年 10 月 3 日

解释一下需求:

类似对数据库表暴漏为REST API ,不用考虑表间的外建或者关联表, 交互逻辑会在其他层做。

现在写一个的话略繁琐。比如加一个接口

  • 类似MVC的文件结构,要改的地方不少
  • 测试用例,不同输入数据类型,
  • 加接口文档

细节性的要求就是。 比如OpenAPI定义某个字段为10~20长度的字符串。

  • 希望接口文档里面有体现
  • 测试用例里面有不同输入范围覆盖
  • 存储过程有长度校验

自己模糊的感觉就是。存储过程,测试用例,接口文档中关于这个字段长度的信息有冗余。

现在是这种简单接口特别多。。

9 条回复  •  2020-10-03 22:40:15 +08:00
passerbytiny
   1
passerbytiny  
   2020 年 10 月 3 日 via Android
schema 转代码的方法签名部分还能找找,要连方法体甚至 CURD 都自动生成的话,建议辞掉程序员换成廉价外包。
crclz
   2
crclz  
   2020 年 10 月 3 日
1. 业务代码其实是对现实世界业务规则的描述,这种描述是需要人类大脑来转换到代码。业务代码和单纯的 CRUD 有很大区别。

2. 你的这个帖子我看不太懂
calmzhu
   3
calmzhu  
OP
   2020 年 10 月 3 日
@passerbytiny

懒惰是第一生产力,偷懒都不会的话,建议去搬砖。
calmzhu
   4
calmzhu  
OP
   2020 年 10 月 3 日
@passerbytiny

只要业务代码对单个实体的的 CRUD 部分
可以理解为通过 RESTAPI 对数据库里面的单张表进行操作。并且所有数据库表之间无任何联系。 交互逻辑会在其他层做。
现在写一个的话略繁琐。比如加一个表

要定义 MODEL /Validation/View/Contriller

最主要是接口文档跟测试用例对输入数据的校验太繁琐了。
mtmax
   5
mtmax  
   2020 年 10 月 3 日
哈哈 我刚入行时写过 不过是通过 service 和 model 代码自动生成 swagger 注解 就是那一堆 @ApiOperation @ApiModel 等

原因是同事写代码都不写 swagger 然后 leader 要我去补 swagger 文档 那么多接口 我就写了个工具类去自动生成

主要原理就是解析字符串, 然后匹配特点的 kv 翻译成中文, 没匹配到自动开启百度翻译 哈哈哈现在想起还觉得挺有意思的
fy
   6
fy  
   2020 年 10 月 3 日
生成 curd 啊,我搞过:
https://github.com/fy0/slim

就是文档写的不好,实践了两三年了,有些 API 的设计存在问题,最近正在重构。
clf
   7
clf  
   2020 年 10 月 3 日
这看上去是……低代码开发工具?能被生成的代码业务逻辑肯定不复杂,而有复杂业务逻辑的接口也没法生成或者说生成的成本不会降低。

其实编程语言就可以理解为描述你接口行为的一种语言,只不过这种语言不止为 API 接口的构建服务。

你可以设计一种灵活的配置式的代码生成工具,但接口的实现需求越灵活,配置的过程也越复杂,学习成本也越大。或者就是遵循一个 All in one 的接口,比如 Odata,服务端配置完后,剩下的基本就是前端的事情了。
calmzhu
   8
calmzhu  
OP
   2020 年 10 月 3 日
@lychs1998
是的。就是低代码甚至无代码开发工具。

现在的框架功能不仅仅是 API 构建。只是需要 API 构建的部分。 帖子加了个 append 部分解释。
calmzhu
   9
calmzhu  
OP
   2020 年 10 月 3 日
@calmzhu
不算开发工具吧。并不是给专职程序员的。而是需要用到代码的其他学科人员。
比如有的流程自动化部分,只是需要通过 coding 把实际对象做个展现映射。存粹的 CRUD 就够了(甚至只要 UD 都不怎么用)。关注点并不在 coding 部分,
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 32ms · 3.9.8.5