mcpField
O
openapi-ts-v0

openapi-ts-v0

github.com/blockmatic开发1221 次安装5 周前更新
代码仓库

关于 openapi-ts-v0

面向 TypeScript 开发者的技能指南,介绍如何用 @hey-api/openapi-ts 从 OpenAPI 3.0 规范生成客户端。内容包括配置、类型化响应与错误处理,并说明与 TanStack Query 等工具的协作方式。

主要功能

  1. 01从 OpenAPI 规范生成 TypeScript 客户端
  2. 02根据规范生成类型化客户端方法
  3. 03配置生成格式与模式类型
  4. 04处理类型化错误响应
  5. 05说明 TanStack Query 集成方式

适用场景

  1. 01为 OpenAPI API 生成 TypeScript 客户端
  2. 02在应用代码中调用类型化 API 方法
  3. 03基于生成客户端编写 TanStack Query 钩子

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/blockmatic/basilic-skills --skill openapi-ts-v0

安装后在 Claude Code 中输入/openapi-ts-v0确认已加载。

附带文件references/react-query-integration.mdtemplates/openapi-ts.config.ts

详细介绍

技能:openapi-ts

适用范围

  • 适用于:使用 @hey-api/openapi-ts 根据 OpenAPI 3.0 规范生成 TypeScript 客户端
  • 不适用于:编写 OpenAPI 规范、实现 API 服务端(参见 fastify)

前提条件

  • @hey-api/openapi-ts v0+
  • OpenAPI 3.0 规范格式
  • TypeScript v5+,启用严格模式
  • 默认仅生成类型和客户端;React Query 钩子由使用方应用手动编写

原则

  • 根据 OpenAPI 规范生成客户端(单一事实来源)
  • 客户端方法完全根据 OpenAPI 规范进行类型化
  • 错误响应根据 OpenAPI 错误架构进行类型化
  • 使用 createClient 工厂实例化客户端
  • 在配置文件中设置输出格式和架构类型
  • Zod 架构和生成的 React Query 插件均为可选扩展

约束

必须
  • 使用 openapi-ts.config.ts 进行配置
  • 在代码中使用客户端之前先生成客户端
  • 处理 response.error,以应对类型化错误响应
应当
  • 使用 Prettier 格式化(output.format: 'prettier')
  • 生成 TypeScript 枚举(types.enums: 'typescript')
  • 基于生成的客户端手动编写 TanStack Query 钩子
  • 仅在需要运行时验证时添加 Zod 架构(schemas.type: 'zod')
  • 仅在项目选择使用时添加生成的 React Query 插件
避免
  • 手动编辑生成的代码
  • 使用生成的客户端时不处理错误
  • 混用生成的客户端代码和手动编写的客户端代码

协作关系

模式

配置模式
// openapi-ts.config.ts
import { defineConfig } from '@hey-api/openapi-ts'

export default defineConfig({
  input: './openapi.json',
  output: {
    path: './src/gen',
    format: 'prettier',
  },
  types: {
    enums: 'typescript',
  },
})
客户端使用模式
import { createClient } from './gen/client'

const client = createClient({
  baseUrl: 'https://api.example.com',
})

const response = await client.GET('/users/{id}', {
  params: { path: { id: '123' } },
})

if (response.error) {
  // Handle typed error
  return
}

// response.data is typed from OpenAPI spec

完整示例请参见 配置模板。

参考资料

评论

支持 Markdown