因工作中重新构建系统,根据老板的委托组织一套框架功开发使用。
都是老代码了,所以在整个开发周期的痛点又很多,我这里集中解决了两个! 一个是前后台开发过程中的沟通,以及借口文档的在整个生命周期的统一,所以选择了swagger codegen 作为框架的基础配合改造过的swagger codegen 插件实现代码自动生成,配合改造后的借口文档生成插件实现借口文档动态生成。
使用心得:
1,引用工程基础包中的实体进入yaml文件中。插件改造之后的pom配置文件
通过对importMappings 以及typeMappings的配置可以实现对外部的引用
在yaml中引用直接通过
$ref: "#/definitions/Prop"
即可进行轻松引用。
<plugin> <groupId>io.swagger</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>2.4.13-pactera</version> <executions> <execution> <id>spring-server</id> <phase>pre-clean</phase> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/api/## tet121.yaml, tet122.yaml, tet123.yaml </inputSpec> <language>spring</language> <output>${project.basedir}</output> <apiPackage>test.controller</apiPackage> <modelPackage>test.controller.dto</modelPackage> <!-- 非诚重要的配置,否则文件将要被覆盖 --> <skipOverwrite>false</skipOverwrite> <importMappings> <importMapping>TestBean=test.json.TestBean </importMapping> </importMappings> <typeMappings> <typeMapping>TestBean=test.json.TestBean</typeMapping> </typeMappings> <generateSupportingFiles>false</generateSupportingFiles> <configOptions> <dateLibrary>java8</dateLibrary> <java8>true</java8> </configOptions> </configuration> </execution> </executions> </plugin>
2,如何实现yaml中的继承
在definitons定义过程中加入discriminator即可实现,这样就可以通过在外部定义好实体之后,引入工程。子类也可以轻松的使用其定义的实现类,而不会被覆盖。
Result:
discriminator: "type"
description: "统一的响应返回类型。"
type: "object"
这两点是我在使用过程中觉得难的地方。查了很多资料,查找不易。修改插件也不容易,不介意的话帮忙点个赞。
改造后插件 github地址 ,deploy到自身的maven私服中那么整个团队的人都可以用了。
https://github.com/wang249639015/swagger-codegen.git
如又疑问可加微信w249639015
此插件可以让整个借口代码的生成不感知,具体业务人员只需要关注自身的业务逻辑实现,如果又兴趣的话也可以在生成过程中,改造插件的ftl实现,发布dubbo自动生成,sofa等也可以实现。
如果觉得这个贴子以及插件对您工作效率有所提升,期待您的打赏可帮助定制各类插件。
你的支持是我前进的动力(一键生成pdf借口文档,html借口文档教程,后续提供。)