rest-api-to-types README
将 Rest Api JSON 导出为 Typescript interface
每个接口生成一个 namespace
(用于分组,避免重名), 包含 Params
, Response
, 每一个 DTO 都能生成独立的 interface
.
预览
Config
名称 |
说明 |
类型 |
默认 |
restApiToTypes.restApiJsonUrl |
Swagger API 列表 |
RestApiJsonUrlItem[] |
[] |
restApiToTypes.restApiJsonHeaders |
追加请求头 (全局) |
object |
{} |
restApiToTypes.requestSavePath |
保存接口地址 (全局) |
string |
'src/api' |
restApiToTypes.savePath |
.d.ts 接口文件保存路径 |
string |
'types/rest-api-interfaces' |
restApiToTypes.restApiReplaceUrl |
域名替换 0 替换成 1 |
[string, string] |
["/v1/doc/new","/api/app"] |
restApiToTypes.reloadWhenSettingsChanged |
当用户设置更改时重新加载数据. (在某些频繁刷新设置的情况下需要关闭) |
boolean |
true |
RestApiJsonUrlItem
属性 |
说明 |
类型 |
是否必填 |
title |
项目标题 |
string |
* |
url |
rest api json url |
string |
* |
savePath |
rest api json url |
string |
|
headers |
自定义请求头信息 (如鉴权 Token 等) |
object |
|
requestSavePath |
保存接口地址 |
string |
|
复制请求函数
配置一个请求函数模板用于快速复制
编辑 .vscode/rest-api-to-types.template.js
文件
如果导出了 copyRequest
函数,即可使用此功能
下载请求接口分组(建议将接口请求挂载 provide 自动导入)
plugin: [
new webpack.ProvidePlugin({
"$api": path.resolve(process.cwd(), 'src/api'),
}),
]
下面是一个例子:
/**
* 请求函数模板
*
* @param {{
* name?: string // 接口名称
* namespace?: string // 命名空间
* path?: string // 接口路径
* appPath?: string // appId
* method?: string
* url?: stirng
* }} fileInfo
* @returns
*/
function copyRequest(fileInfo) {
const { name, namespace, path, method, appPath } = fileInfo
// 请求函数名称
const requestName = method.toLowerCase() + namespace.slice(0, 1).toUpperCase() + namespace.slice(1)
return [
`/** ${name} */`,
`export async function ${requestName}(params?: ${namespace}.Params, options?: RequestOptions) {`,
` return $api.request<${namespace}.Response>(\`/api${
appPath ? appPath.replace('-', '/') : ''
}${path}\`, params, {`,
` method: '${method}',`,
` ...options,`,
` })`,
`}`,
'',
]
}
module.exports = {
copyRequest,
}
Changed
新增合并 swagger 接口 & 新增下载请求接口
- 优化参数在链接上的方式
- 部分参数转换问题
- 优化接口下划线拼接方式