根据 openapi 规范自动创建接口请求方法、数据类型等联调信息

接口请求、请求与返回数据类型等联调信息,虽然不难,但结合起 ts,维护起来还是需要一些工作量,略显繁琐。后端改变类型或参数后,还得逐个找到并修改。

但如果后端接口提供了 openapi 规范的接口信息,就可以基于它们来自动创建请求方法、类型等。

后端启用 swagger 文档

如果后端使用 swagger 管理接口文档,可直接获取对应的在线地址,直接生成相关文件。

比如 Java 项目启用了 knife4j openapi3 的文档后,可以访问文档和接口信息:

访问文档:http://127.0.0.1:3000/swagger-ui/index.html

获取 openapi 规范的接口信息: http://127.0.0.1:3000/v3/api-docs/default

只要后端生成了完整的接口文档,比如 DTO 中的字段必填信息,就可以依据校验规则生成这些请求参数的类型。

前端生成数据类型和请求方法

通过 openapi-typescript-codegen 可以在前端根据 openapi 规范直接生成数据类型、接口请求方法,后端发生改变后,重新生成即可。

https://www.npmjs.com/package/openapi-typescript-codegen

支持 OpenAPI 的 v2.0 和 v3.0 规范,支持 Fetch、Node-Fetch、Axios、Angular 和 XHR http 请求。

openapi --input http://127.0.0.1:3000/v3/api-docs/default --output ./generated --client axios

调用接口

调用起来就比较方便了,直接引入就行,再也不用维护接口了,结合 ts ,参数必填状态也能有效地提示,比如分页信息要求必填,前端调用时有提示就不会漏填了。

CategoryControllerService.list1({ page: 1, size: 10 }).then((res) => {
  console.log(res.content);
});

antd pro 中的生成

在 Ant Design Pro 中,框架级集成了 openapi 相关生成能力,可生成相关的接口和文档能力,生成的文件在 src/services 下,很方便。

https://pro.ant.design/zh-CN/docs/openapi/