Введение в @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-запросы и потоки Server-Sent Events распознаются автоматически по объявленным типам содержимого или фактическим заголовкам ответа.
- WebSocket — двунаправленные текстовые и двоичные сеансы с общей структурой событий.
- gRPC — унарные вызовы, серверный, клиентский и двунаправленный стриминг на основе файлов
.protoили рефлексии сервера. - MCP — вызовы инструментов Model Context Protocol через Streamable HTTP или stdio.
- 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.