NodeJS中是否有可复用OpenAPI Specs的库以避免手动编写API请求?
NodeJS中基于OpenAPI Specification自动生成API请求的库
当然有,NodeJS生态里有不少成熟的库能帮你基于OpenAPI Specification自动生成API客户端,不用手动编写每个请求,下面是几个常用选项:
openapi-typescript-codegen
这是TypeScript项目里的热门选择,能从OpenAPI Spec生成类型安全的API客户端和接口定义,自带完整的类型提示。
安装命令:npm install openapi-typescript-codegen --save-dev
生成客户端命令:npx openapi-typescript-codegen --input ./openapi.json --output ./src/api
生成后直接导入使用:import { UserApi } from './src/api'; const userApi = new UserApi(); // 调用接口,自动补全参数和返回值类型 const user = await userApi.getUserById(123);swagger-client
适合需要动态加载Spec的场景,不需要预生成代码,运行时直接加载OpenAPI文件并生成请求方法。
安装命令:npm install swagger-client
使用示例:import SwaggerClient from 'swagger-client'; const client = await SwaggerClient({ url: './openapi.json', usePromise: true }); // 调用接口,路径和参数对应Spec定义 const response = await client.apis.User.getUserById({ id: 123 });axios-openapi-generator
基于Axios封装的工具,生成的API客户端完全兼容Axios的配置、拦截器等特性,适合已经在用Axios的项目。
安装命令:npm install axios-openapi-generator --save-dev
生成命令:npx axios-openapi-generator -i ./openapi.json -o ./src/api
使用示例:import { getUserById } from './src/api'; // 调用接口,保持Axios的请求风格 const response = await getUserById({ id: 123 });
内容的提问来源于stack exchange,提问作者Michael Mitch
相关产品推荐
相关产品推荐

