Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>REST API To TypesNew to Visual Studio Code? Get it now.
REST API To Types

REST API To Types

alon0824

|
104 installs
| (2) | Free
VSCode Extension: Transform rest-api to typescript interface.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

rest-api-to-types README

将 Rest Api JSON 导出为 Typescript interface

每个接口生成一个 namespace (用于分组,避免重名), 包含 Params, Response, 每一个 DTO 都能生成独立的 interface.

预览

img

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

  • 优化添加项目功能
  • 使用 codIcon 替换 svg 图标

新增合并 swagger 接口 & 新增下载请求接口

  • 优化参数在链接上的方式
  • 部分参数转换问题
  • 优化接口下划线拼接方式
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft