Edit page

API

1. 安装 Autos

通过 npm 安装 Autos。

2. 参数配置

2.1 命令行参数

以下可直接通过命令行设置的参数:

2.2 主配置文件

Autos 默认从当前目录下的 json2service.json 文件读取主配置,我们也可以通过命令行参数 -c, --config 指定任意格式为 JSON 或者 JavaScript 的配置文件。

我们可以使用npx autos --init命令快速的创建一个json2service.js配置文件:

配置文件必须导出一个对象,包含以下可配置属性:

url
String
required

Swagger或者Mock JSON文档地址,自 3.1.* 起,请配置成本地文件

remoteUrl
String | undefined

远程 url,配置成远程地址,用于增量更新使用;自 @3.1.* 支持

type
"yapi" | "swagger" | undefined

类型 yapi 或默认 swagger

yapiConfig
Yapiconfig | undefined

如果是 yapi,配置

swaggerParser
Partial<swaggerparser> | undefined

Swagger生成TS代码相关配置

hostname
String | undefined

本地临时服务 hostname,默认 127.0.0.1,可指定为其他 ip 或者 hostname

swaggerConfig
{ exclude?: regexp[] | undefined; include?: regexp[] | undefined; autoclearmodels?: boolean | undefined; includemodels?: regexp[] | undefined; modifier?: (<s extends swaggerjson>(swagger: s, config: json2service) => s) | undefined; formater?: string | undefined; } | undefined

Swagger 配置

validateResponse
Boolean | undefined

生成自动校验逻辑

guardConfig
Guardconfig | undefined

方法名安全相关设置

requestConfig
({ url?: string | undefined; } & coreoptions) | undefined

拉取JSON文档请求相关设置

2.2.1 yapiConfig 参数

yapiConfig 用以配置将 YApi 格式接口文档转换成 Swagger 接口文档格式的各种规则。

required
Boolean | undefined

相应是否字段是否必须;当直接使用 yapi json 定义返回数据格式的时候,生成的 typescript 文件,默认情况下,所有字段都是可选的,配置成 true,则所有字段都是不可缺省的

bodyJsonRequired
Boolean | undefined

postJSON字段是否必须;当直接使用 yapi json 定义 json 格式 body 参数的时候,生成的 typescript 文件,默认情况下,所有字段都是可选的,配置成 true,则所有字段都是不可缺省的

categoryMap
String2stringmap | ((cate: string) => string) | undefined

分类名中文=>英文映射;yapi 项目接口分类中英文映射,如 `{ "公共分类": "Common" }`

beforeTransform
((yapijson: yapicategory[]) => yapicategory[]) | undefined

yapi json 转换成 swagger json 的钩子

afterTransform
((swaggerjson: swaggerjson) => swaggerjson) | undefined

yapi json 转换成 swagger json 后的钩子

_capatibleYAPI
Boolean | undefined

配置为 true,向下兼容,YAPI 转 Swagger 时不生成 operationId,并在生成方法名,采用旧格式,即:url + Method 驼峰格式 否则生成 operationId,并在生成方法名,采用新格式,即: url + Using + Method 驼峰格式,且会通过 guardconfig.prefixReg 等配置对方法名进行进一步处理

2.2.2 swaggerParser 参数

swaggerParser 用以配置直接透传给 Swagger Codegen Java 生成工具的各种参数。

-o
String | undefined

输出 typescript 代码目录,默认是当前 src/services

-t
'plugins/typescript-tkit' | 'plugins/types-only' | 'plugins/typescript-tkit-autos' | 'v3/plugins/typescript-tkit' | 'v3/plugins/types-only' | 'v3/plugins/typescript-tkit-autos'

模板目录 ========== 以下适用于 OpenAPI 2 ========== 默认是 plugins/typescript-tkit 输出类型和 Service 代码; 可配置成 plugins/types-only 仅输出类型; 可配置成 plugins/typescript-tkit-autos 输出新调用方式格式接口; ========== 以下适用于 OpenAPI 3 ========== 可配置成 v3/plugins/typescript-tkit 输出类型和 Service 代码; 可配置成 v3/plugins/types-only 仅输出类型; 可配置成 v3/plugins/typescript-tkit-autos 输出新调用方式格式接口;

-l
String | undefined

language,默认是 typescript-angularjs,避免修改

-i
String
required

输入文件

2.2.3 guardConfig 参数

guardConfig 用以配置检查接口文档是否符合规范的各种规则。

methodUrl2OperationIdMap
String2stringmap | undefined

OperationId到url映射

methodPrefix
String | undefined

生成唯一 operationId 时, method 前边的前置,默认是 Using,例如: 'Using' + 'Get'

mode
"strict" | "safe" | undefined

模式: safe strict

prefixReg
Regexp | undefined

采用url生成方法名时,需要移除的前缀正则,默认值:/^(\/)?api\//g

badParamsReg
Regexp | undefined

参数格式不符合规范的正则,默认值:/[^a-z0-9_.[]$]/gi

unstableTagsReg
Regexp | undefined

不符合规范Tag正则,默认值:/^[a-z-0-9_$A-Z]+-controller$/g

validTagsReg
Regexp | undefined

检测Tag是否全英文,默认值:/^[a-z-0-9_$]+$/gi

validDefinitionReg
Regexp | undefined

DTO命名是否符合规范正则,默认值:/^[a-z-0-9_$«»,]+$/gi

validUrlReg
Regexp | undefined

校验 url 规则,默认值: /api/g,自 3.1.6 新增

2.2.4 requestConfig 参数

requestConfig 用以配置,当需要使用 http 请求从服务器侧下载接口文档文件时的各种参数。

url
String | undefined
baseUrl
String | undefined
callback
Requestcallback | undefined
jar
Boolean | cookiejar | undefined
formData
{ [key: string]: any; } | undefined
form
String | { [key: string]: any; } | undefined
auth
Authoptions | undefined
oauth
Oauthoptions | undefined
aws
Awsoptions | undefined
hawk
Hawkoptions | undefined
qs
Any
qsStringifyOptions
Any
qsParseOptions
Any
json
Any
jsonReviver
((key: string, value: any) => any) | undefined
jsonReplacer
((key: string, value: any) => any) | undefined
multipart
Requestpart[] | multipart | undefined
agent
Agent | agent | undefined
agentOptions
Agentoptions | agentoptions | undefined
agentClass
Any
forever
Any
host
String | undefined
port
Number | undefined
method
String | undefined
headers
Headers | undefined
body
Any
family
4 | 6 | undefined
followRedirect
Boolean | ((response: incomingmessage) => boolean) | undefined
followAllRedirects
Boolean | undefined
followOriginalHttpMethod
Boolean | undefined
maxRedirects
Number | undefined
removeRefererHeader
Boolean | undefined
encoding
String | null | undefined
pool
False | extrapooloptions | ({ [key: string]: agent | agent; } & extrapooloptions) | undefined
timeout
Number | undefined
localAddress
String | undefined
proxy
Any
tunnel
Boolean | undefined
strictSSL
Boolean | undefined
rejectUnauthorized
Boolean | undefined
time
Boolean | undefined
gzip
Boolean | undefined
preambleCRLF
Boolean | undefined
postambleCRLF
Boolean | undefined
withCredentials
Boolean | undefined
key
Buffer | undefined
cert
Buffer | undefined
passphrase
String | undefined
ca
String | buffer | string[] | buffer[] | undefined
har
Httparchiverequest | undefined
useQuerystring
Boolean | undefined

2.2.5 swaggerConfig 参数

swaggerConfig 用以配置在 Swagger 将被 Swagger Codegen 转换为目标代码前的各种修改器。

exclude
Regexp[] | undefined

排除指定的 path,当 exclude 和 include 冲突时,include 生效,3.5.0 版本会自动清理不再需要的 models 也清理掉

include
Regexp[] | undefined

仅包含指定的 path,当 exclude 和 include 冲突时,include 生效,3.5.0 版本会自动清理不再需要的 models 也清理掉

autoClearModels
Boolean | undefined

当接口被排除的时候,是否自动清理无用的 models,默认清理

includeModels
Regexp[] | undefined

强制保留指定的 models

modifier
(<s extends swaggerjson>(swagger: s, config: json2service) => s) | undefined

在 diff & merge 之前,修改远程 swagger

formater
String | undefined

格式化代码的命令,比如: 'prettier {path}/**\/**.ts --write --loglevel error --with-node-modules',注意使用 prettier 一定要配置 '--loglevel error --with-node-modules',否则会出错

2.2.6 示例

以下是一个完整的主配置示例。

2.3 使用方式

npx

安装 npx npm i -g npx,通过 npx 直接使用 Autos 生成目标代码:

npm scripts

通过 npm scripts 使用 Autos 生成目标代码,在 package.json 内添加:

npm run api 生成目标代码。

3. Ajax 接口

Autos 生成的 Service 代码内包含以下和后端进行通信的固定代码:

你可以参考 @ekit/ajax 代码实现自定义的 @ajax 模块,或者按照以下接口定义,实现自定义的 @ajax 模块:

4. 增量更新

Autos 支持交互勾选界面、增量同步远程增、删、改差异到本地文档。

流程步骤

  • 主配置文件配置 url 和 remoteUrl
    • url - 本地接口文档文件路径【如文件不存在,在获取 remoteUrl 指定地址内容后,创建该文件】
    • remoteUrl - 新版接口文档 url 或者路径
  • 执行 Autos
  • Autos 对本地接口文档文件和新版接口文档进行 diff
    • 有差异
      • 打开浏览器,人工选择需要同步的差异,点击“保存”
      • Autos patch Delta 生成同步差异后的接口文档
      • 进入下一步
    • 无差异
      • 直接进入下一步
  • Autos 调用 Swagger Codegen 生成目标代码

5. 简洁模式

从 3.5.4 版本起,当配置 swaggerParser['-t'] 参数为 'plugins/typescript-tkit-autos' 时,Autos 会生成通过 url 调用的类型安全的 service 代码,如以下示例所示:

此时,我们需要使用新版的框架配套的 ajax 或者自行实现 autosFetch,如以下示例所示:

如此,我们就可以直接通过 url 调用 service 代码,如以下示例所示(tCall 需要更新 redux-model 到最新的版本):

6. CHANGELOG

3.6.0

支持增量更新 Service 文件,比如对于 API.ts,如果内容未发生变动,则不会重新生成 API.ts。

如果使用了自动格式化代码工具,需要在配置文件内配置 formater 参数来取代之前的调用方式,比如之前在 package.json 里配置:

需要移除 "prettier src/services//.ts --write",并在 json2service.js 里配置: