接口请求、请求与返回数据类型等联调信息,虽然不难,但结合起 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
下,很方便。