Edit pageAPI
1. 安装 Autos
通过 npm 安装 Autos。
2. 参数配置
2.1 命令行参数
以下可直接通过命令行设置的参数:
2.2 主配置文件
Autos 默认从当前目录下的 json2service.json 文件读取主配置,我们也可以通过命令行参数 -c, --config
指定任意格式为 JSON 或者 JavaScript 的配置文件。
我们可以使用npx autos --init
命令快速的创建一个json2service.js
配置文件:
配置文件必须导出一个对象,包含以下可配置属性:
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 生成工具的各种参数。
输出 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 输出新调用方式格式接口;
language,默认是 typescript-angularjs,避免修改
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 请求从服务器侧下载接口文档文件时的各种参数。
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
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
headers
Headers | 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
tunnel
Boolean | undefined
strictSSL
Boolean | undefined
rejectUnauthorized
Boolean | undefined
preambleCRLF
Boolean | undefined
postambleCRLF
Boolean | undefined
withCredentials
Boolean | 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 里配置: