@powerduck/openapi-request 简介
@powerduck/openapi-request 是面向 OpenAPI 3.2 的集合调试器和请求运行库。它根据 OpenAPI 文档规划并发送请求,识别流式响应,根据实际响应生成更新后的文档,并通过一套精简接口支持六种通信协议。
- 包名:
@powerduck/openapi-request - 版本:
- 许可证: MIT
- 模块格式: 同时提供 ESM 和 CommonJS 构建,附带类型声明。
用途
该库以同一份文档为依据,满足三类需求:
- 面向图形界面的客户端 —
createClient()返回的对象提供prepare()、send()、connect()、discover()和writeback(),分别对应图形化请求编辑器的各个操作步骤。 - 脚本化调试器 —
createDebugger()返回ProtoKit,提供send()、sendMany()和toCollection(),用于自动化、脚本和 CI。 - 手动管理的长连接会话 —
createManualSession()返回双向会话对象,包含打开、发送、关闭操作及事件流。WebSocket、MCP 和 gRPC 使用相同的对象结构,因此可以共用一套界面。
协议适配器
核心不依赖具体传输方式;协议行为由注册到 AdapterRegistry 的适配器提供。
- HTTP / SSE — 默认支持。根据声明的内容类型或实际响应头,自动识别普通 JSON 请求和服务器发送事件流。
- WebSocket — 使用统一事件结构处理双向文本和二进制会话。
- gRPC — 根据
.proto文件或服务器反射,执行一元、服务端流、客户端流和双向流调用。 - MCP — 通过 Streamable HTTP 或 stdio 调用 Model Context Protocol 工具。
- GraphQL — 支持内省、操作生成和执行。
主要功能
- OpenAPI 3.2 集合模型 — 通过
operationId或method+path定位操作,并根据参数、请求体和示例规划请求。 - 流式响应识别 —
isStreamingOperation()、isSseContentType()和isStreamingContentType()根据声明的内容类型判断响应类型,probeStreamingResponse()检查实际响应头。 - 响应回写 —
inferSchema()、mergeSchema()、toResponseObject()和writeBackResponse()推导响应模式并返回更新后的文档。默认情况下,回写成功时send()通过patchedSpec返回该文档;设置writeBack: false可禁用回写。传入的文档不会被修改,也不会自动保存文件。持久化结果前,请检查writeBackSkippedReason和writeBackWarnings。 - 模式辅助工具 —
sampleFromSchema()根据模式生成示例数据。 - 大型依赖按需加载 — gRPC(
@grpc/grpc-js、@grpc/proto-loader)和 MCP(@modelcontextprotocol/sdk)在首次使用时加载,仅使用 HTTP 时无需承担其加载开销。
安装
npm install @powerduck/openapi-request
快速上手
import { createClient } from "@powerduck/openapi-request";
const spec = {
openapi: "3.2.0",
info: { title: "Users", version: "1.0.0" },
paths: {
"/users/{id}": {
get: {
operationId: "getUserById",
parameters: [{ name: "id", in: "path", required: true, schema: { type: "string" } }],
responses: { "200": { description: "User" } },
},
},
},
};
const client = createClient();
const plan = client.prepare({
spec,
target: { operationId: "getUserById" },
});
const result = await client.send({
spec,
target: { operationId: "getUserById" },
values: { path: { id: "42" } },
serverUrl: "https://api.example.com",
});
后续阅读
- 安装 — 包结构、子路径导出和协议能力的对等依赖。
- 快速上手 — 第一个请求、调试器运行和手动会话。
- 配置 —
CreateClientOptions、DebuggerOptions及各协议的配置。 - API 参考 — 按功能分类的全部导出。
- 示例 — HTTP、SSE、WebSocket、GraphQL、MCP 和 gRPC 的可运行示例。
许可证
MIT.