# Swagger|Yapi TypeScript interface生成

目前已支持swagger2.0，后续支持swagger3.0 以及Yapi

## Getting Started

Install with NPM:

```
npm install wxq-api-ci -D
```

Install with pnpm:

```
pnpm add -D wxq-api-ci
```

## Usage

```
npx wxq-api-ci
```

## Options

在项目根目录创建wxq-api-ci.config.js文件，并添加内容配置

```
const config = {
  docUrl: 'http://domain.com', // swagger等服务域名
  path: '', // swagger的json访问path
  group:'', 服务分组名称，如果不传则为单个服务或者匹配全部服务
  type: 'swagger2', // 支持解析的文档类型  swagger2 | swagger3 | yapi
  build: {
    outDir: 'api', // interface & api 的生成路径
    apiOutput: {outDir: "", filename: "",hostAchor:""}, // api的生成路径,不设置即读取outDir路径
    filename: 'api.d.ts', // interface 的生成文件名
  }, // 自动化生成配置
  requestFrom: '', // api文件引包 eg:  import { request } from "src/utils/request";
  /**
   * 针对 iso8601 时间格式字符串的自定义类型
   * @description 如果在 http 请求返回数据时统一做时间数据转换，比如统一转换为 Date 或者 Moment，那么可以在这里设置对应的类型
   */
  isoString: {
    typeName: 'Moment',
    import: 'import { Moment } from "moment"',
  },
  regexp: "", // 正则匹配过滤符合apiUrl规则的接口集合
  urls: string[], // 接口url集合，只转化这些接口
  include: [], // 过滤一级目录集合 tag
  exclude:[], // 排除一级目录集合 tag
};

module.exports = config;

```

## inteface rule

##### header

生成规则：path + By + 参数 + 请求方式 + Query

```
/** eg */
get -- "/user/info?id=1"

/** 生成的interface */
interface userInfoGetQuery {

}

```

##### url参数

生成规则：path + By + 参数 + 请求方式 + Param

```
/** eg */
get -- "/user/info/{id}"

/** 生成的interface */
interface userInfoByIdGetParam {

}
```

##### body

生成规则：path + 请求方式 + Body

```

```

##### response

生成规则：path + 请求方式 + Response

```

```
