OpenAPI Generator简介(取自chatGPT):
OpenAPI Generator是一个开源的项目,它可以根据OpenAPI规范(以前称为Swagger规范)生成API客户端库、服务器存根和文档。OpenAPI规范是一种描述RESTful API的标准方式,它使用JSON或YAML格式定义API的结构、终端点、参数、响应等信息。
OpenAPI Generator的主要目标是简化开发人员在构建和维护API相关代码时的工作。它通过使用模板引擎和代码生成技术,根据OpenAPI规范自动生成多种编程语言的客户端和服务器代码,以及相关的文档。
为什么使用?
- 不用封装大量的请求:自己封装的请求真没人家的好用
- 基于yaml的api:只需更新yaml文件,一键更新前端请求代码
- 类型完善:openapi generator会自动生成各种所需数据类型
使用openAPI generator之前封装请求是一个繁重的工作,维护起来也很麻烦(还需要不断地和后端人员确认),但是使用后一切就简单了起来。
至于openAPI generator的强大还需要在使用中去发现。
本次的演示是生成typescript-axios类型的请求,当然还有许多其他种类的封装(太多了,不一一列罗列):
Generators List | OpenAPI Generator
并且本次演示使用docker中的官方镜像:openapitools/openapi-generator-cli
https://hub.docker.com/r/openapitools/openapi-generator-cli/tags
这样做的好处是不用全局安装openapi generator。
- 创建
docker-compose.yml
command命令中的各参数官网更详细:Documentation for the typescript-axios Generator | OpenAPI Generator
# docker-compose.yml version: '3' services: openapi-generator-cli: image: openapitools/openapi-generator-cli:v7.0.1 command: [ 'generate', '-i', './tmp/src/openapi.v3.yaml',# 卷中yaml文件映射到容器中的位置 '-o', 'tmp/dist',# 在容器中生成代码的输出路径 '-g', 'typescript-axios',# 生成的前端代码类型 '--additional-properties=withSeparateModelsAndApi=true', '--model-package=model', '--api-package=api', '--type-mappings=Date=string', ] volumes: - ./submodules/performance-spec:/tmp/src # 定义卷 - ./src/services:/tmp/dist # 定义卷
- 准备API文档的yaml文件
这个yaml文档一般是前后端通用的,是api设计的一种规范。 - 启动docker
- 通过
docker compose
启动容器
docker-compose run --rm openapi-generator-cli
openapi-generator-cli
:在docker-compose.yaml
中配置过了。--rm
:在容器停止运行后自动删除容器。这意味着当容器运行结束后,Docker 将会自动清理并删除这个容器的文件系统,释放相应的资源。确保每次启用
openapi-generator-cli
都用的是最新的openapi.yaml
文件。
然后就是静静的等待。
最终在前端的代码会生成在配置好的位置,如:(文件夹的名字根据自己的配置可能有所不同)
とても便利です。