配置
配置分为三层:客户端或调试器工厂选项、传给 prepare() 和 send() 的 SendOptions 对象,以及各协议专用选项。
工厂选项
CreateClientOptions
传给 createClient(options?),所有字段均可选。
| 字段 | 类型 | 说明 |
|---|---|---|
writeBack | WriteBackOptions | 控制响应如何合并回规范 |
response | ToResponseOptions | 控制响应对象的规范化方式 |
import { createClient } from "@powerduck/openapi-request";
const client = createClient({
writeBack: {
overwriteExamples: true,
// ... other WriteBackOptions
},
response: {
includeExamples: false,
// ... other ToResponseOptions
},
});
DebuggerOptions
传给 createDebugger(config?),所有字段均可选。
| 字段 | 类型 | 说明 |
|---|---|---|
adapters | ProtocolAdapter[] | 自定义适配器列表,替换全部默认适配器 |
extraAdapters | ProtocolAdapter[] | 追加到默认注册表的适配器 |
writeBack | WriteBackOptions | 回写选项 |
response | ToResponseOptions | 响应规范化选项 |
writeBackTruncated | boolean | 回写从截断流推断出的模式,默认为 true |
import { createDebugger, HttpAdapter, WebSocketAdapter } from "@powerduck/openapi-request";
// Use only HTTP and WebSocket adapters
const debugger1 = createDebugger({
adapters: [new HttpAdapter(), new WebSocketAdapter()],
});
// Add a custom adapter to the defaults
const debugger2 = createDebugger({
extraAdapters: [new MyCustomAdapter()],
writeBackTruncated: true,
});
回写与捕获示例
WriteBackOptions 支持 strategy("merge" 或 "replace",默认 "merge")、keepExistingDescription(默认 true)、allowedStatusCodes(空表示全部)、protectComponentRefs(默认 true)、overwriteExamples(默认 true)和 requirePassingTests。发送流程会检查测试结果;直接调用 writeBackResponse 不会执行这项检查。
ToResponseOptions 支持 includeExamples(默认 true)、maxExampleChars(默认 4000)和 maxEventPreviewChars(默认 200)。请禁用示例捕获,或在发布前检查捕获的示例:实际响应可能包含凭据或个人数据。
发送流程通常在 patchedSpec 中返回修改后的副本,不修改输入文档,也不保存文件。为单次调用设置 writeBack: false 可跳过此步骤。工厂的 writeBack 对象配置合并方式;单次调用的布尔值决定是否执行回写。
SendOptions
prepare() 和 send() 的主要输入对象,用于传入规范、目标、取值及全部请求级配置。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
spec | OpenApiDocument | 是 | 完整的 OpenAPI 3.2 文档 |
target | OperationTarget | 是 | 操作标识,见下文 |
values | RequestValues | 否 | path/query/header/cookie/body 的具体取值 |
serverUrl | string | 否 | 覆盖 spec.servers[0].url |
serverVariables | Record<string, string> | 否 | 服务器 URL 模板变量 |
variables | Record<string, string> | 否 | 以 {{name}} 引用的环境变量 |
globals | Record<string, string> | 否 | Postman 风格的全局变量 |
localVariables | Record<string, string> | 否 | 局部变量 |
collectionVariables | Record<string, string> | 否 | 集合级变量 |
auth | AuthConfig | 否 | 鉴权配置 |
scripts | ScriptConfig | 否 | 请求前脚本与测试脚本 |
runner | RuntimeRunOptions | 否 | 完整透传 postman-runtime 选项,优先级最高 |
websocket | WebSocketOptions | 否 | WebSocket 专用选项 |
graphql | GraphQLOptions | 否 | GraphQL 专用选项 |
mcp | McpOptions | 否 | MCP 专用选项 |
grpc | any | 否 | gRPC 专用选项 |
timeout | number | 否 | 单次请求超时,单位毫秒,是 runner.timeout.request 的便捷写法 |
SendOptions 还接受以下执行与流式控制选项:
| 字段 | 类型 | 说明 |
|---|---|---|
fetch | typeof fetch | 在支持的场景下使用宿主提供的隔离 fetch 传输;HTTP/SSE 仍使用 postman-runtime。 |
writeBack | boolean | 设为 false 时不生成 patchedSpec,但仍生成 responseFragment。 |
signal | AbortSignal | 取消执行或采样,仍可能返回部分结果。 |
maxEvents | number | 最多保留的流事件数量。 |
maxStreamMs | number | 流式采样的最长持续时间,单位毫秒。 |
maxResponseSize | number | 响应字节数上限。 |
maxBufferChars | number | SSE 解析器在事件边界前的缓冲上限,默认 4194304 个字符。 |
maxEventChars | number | 每个 SSE 事件保留的数据上限,默认 1048576 个字符。 |
inheritEventId | boolean | 缺少 ID 时继承上一条 SSE 事件 ID,默认 true。如需更严格的模式推断,设为 false。 |
onEvent | (event: StreamEvent) => void | 接收流事件。 |
onConsole | (log: ConsoleLog) => void | 接收脚本控制台输出。 |
onAssertion | (assertion: AssertionResult) => void | 接收断言结果。 |
onResponseStart | (info: ResponseStartInfo) => void | 获取早期 HTTP/SSE 响应头和 streaming 分类。 |
onOpen | (info) => void | 接收 WebSocket 连接详情:URL、协议和响应头。 |
各协议适配器对限制的解释可能不同。UI 回调应保持轻量;执行层会捕获回调抛出的异常。HTTP 请求器设置使用 runner.requester;若指定其中的 maxResponseSize,必须为正数,不能为零。