1.0.1-9 • Published 4 months ago

api-gear v1.0.1-9

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

api-gear

NPM

api-gear 是一个高效的工程化工具,它可以将 Swagger(v2版本) 文档转换为 TypeScript 文件。这个工具的主要目标是自动化后端接口的类型定义,将其转换为前端代码,从而消除了手动编写类型定义的需求。

通过使用 api-gear,你可以大大提高开发效率,减少错误,并确保前后端接口的类型一致性。这个工具特别适合在大型项目中使用,其中可能包含大量的接口和类型定义。

English | 简体中文

主要特性

  1. 自动化:只需一次设置,就可以自动将后端的 Swagger 文档转换为 TypeScript 文件。
  2. 准确性:通过直接从 Swagger 文档生成类型定义,可以确保前后端接口的类型一致性。
  3. 高效率:消除了手动编写和更新类型定义的需求,从而大大提高了开发效率。
  4. 便捷性:可以作为命令行工具直接转换swagger数据为 TypeScript 文件,同时支持转换后清除swagger JSON 数据文件。

如何开始

  1. 安装
npm install api-gear -D
  1. 添加配置文件 api-gear.config.js(如果仅做命令行工具转换swagger为TypeScript可以省略)
const path = require("path");

module.exports = () => {
  return {
    output: path.resolve(__dirname, "./autoApi"),
    serviceMap: {
      yourServiceName: "your api path",
    },
  };
};
  1. 配置命令
{
  "scripts": {
    "api-gear": "api-gear",
  }
}
  1. 运行命令, 自动生成接口类型定义

仅更新定义文件

npm run api-gear
  1. 帮助信息查看
npx api-gear --help

配置项

选项名称描述类型默认值
output文件生成目录(完整路径)stringpath.join(process.cwd(), "./api-gear")
serviceMap需要转换的服务Record<string, string>null
serviceNameToPath是否根据服务名称添加子级目录booleanfalse
createTsFile是否生成ts文件booleantrue ( --ts=false 修改)
createJsonFile是否生成json文件booleanfalse ( --json=true 修改)
clearJsonFile是否清理json文件booleanfalse ( --type=clear 修改)
newLineKind行尾序列'CRLF'|'LF''LF'( --nlk=CRLF 修改)
sort生成interface时,对成员名称排序(数据内容key顺序不稳定,开启可以防止无效的文件变更)booleanfalse (--sort=true 修改)
pathFilter过滤目标项(用于更新单个接口)(path: string) => boolean() => true
authBear Auth(path: string) => {username: string, password: string}undefined

结果示例

import { apiFetch } from "@/utils/index";
import { dto_ListDriversResponse, dto_DriverDetail, dto_DriverDetail } from "../../types";

/**
 * 获取 RentalApplication Driver 列表
 * @link /api/v1/rental-application/driver
 */
export function GET(options: { query: { search?: string, page_num?: number, page_size?: number, filter?: string } }, extraOptions: any) {
    return apiFetch<dto_ListDriversResponse>({
        url: "/api/v1/rental-application/driver",
        method: "GET",
        ...options,
    }, extraOptions)
}

/**
 * 创建 RentalApplication Driver
 * @link /api/v1/rental-application/driver
 */
export function POST(options: { data: { req: dto_DriverDetail } }, extraOptions: any) {
    return apiFetch<dto_DriverDetail>({
        url: "/api/v1/rental-application/driver",
        method: "POST",
        ...options,
    }, extraOptions)
}

:copyright: License

MIT

写在最后

欢迎大家提 issue, 但希望您能提供你的配置,或者给出类型转换有异常的swagger json 数据,描述清楚如何复现问题。我将不定期清理issue。最后希望大家都能愉快coding, 不用再写api相关的ts代码☺

1.0.1-4

4 months ago

1.0.1-6

4 months ago

1.0.1-2

4 months ago

1.0.1-1

4 months ago

1.0.1-8

4 months ago

1.0.1-7

4 months ago

1.0.1-9

4 months ago

0.0.7

4 months ago

0.0.6

5 months ago

0.0.5

6 months ago

0.0.4

6 months ago

0.0.3

6 months ago

0.0.2

6 months ago

0.0.1

6 months ago