Einführung in @powerduck/openapi-request
@powerduck/openapi-request ist ein Collection-Debugger und eine Laufzeitumgebung für Anfragen auf Basis von OpenAPI 3.2. Die Bibliothek plant und sendet Anfragen anhand eines OpenAPI-Dokuments, erkennt Streaming-Antworten und kann aus beobachteten Antworten ein aktualisiertes Dokument erzeugen. Eine kompakte Schnittstelle unterstützt sechs Kommunikationsprotokolle.
- Paketname:
@powerduck/openapi-request - Version:
- Lizenz: MIT
- Modulformat: ESM- und CommonJS-Builds mit enthaltenen Typdeklarationen.
Einsatzbereiche
Die Bibliothek deckt drei Anforderungen ab und verwendet dabei dasselbe Dokument als maßgebliche Grundlage:
- Client für grafische Oberflächen —
createClient()liefert ein Objekt mitprepare(),send(),connect(),discover()undwriteback(). Die Methoden entsprechen den Arbeitsschritten eines grafischen Anfrage-Editors. - Skriptgesteuerter Debugger —
createDebugger()liefert einProtoKitmitsend(),sendMany()undtoCollection()für Automatisierung, Skripte und CI. - Langlebige, manuell gesteuerte Sitzungen —
createManualSession()liefert ein bidirektionales Sitzungsobjekt mit Öffnen, Senden, Schließen und Ereignisstrom. Für WebSocket, MCP und gRPC ist die Struktur gleich, sodass eine gemeinsame Oberfläche alle drei steuern kann.
Protokolladapter
Der Kern ist unabhängig vom Transport. Das jeweilige Verhalten stellen Protokolladapter bereit, die in einer AdapterRegistry registriert sind.
- HTTP / SSE — standardmäßig unterstützt. Gewöhnliche JSON-Anfragen und Server-Sent-Events-Streams werden anhand deklarierter Inhaltstypen oder tatsächlicher Antwort-Header automatisch erkannt.
- WebSocket — bidirektionale Text- und Binärsitzungen mit einheitlicher Ereignisstruktur.
- gRPC — unäre Aufrufe, Server-Streaming, Client-Streaming und bidirektionales Streaming auf Basis von
.proto-Dateien oder Server-Reflection. - MCP — Aufrufe von Model-Context-Protocol-Tools über Streamable HTTP oder stdio.
- GraphQL — Introspektion sowie Erzeugung und Ausführung von Operationen.
Zentrale Funktionen
- Collection-Modell für OpenAPI 3.2 — Operationen werden über
operationIdodermethod+pathgefunden; Parameter, Anfragekörper und Beispiele dienen zur Anfrageplanung. - Streaming-Erkennung —
isStreamingOperation(),isSseContentType()undisStreamingContentType()klassifizieren Antworten anhand deklarierter Inhaltstypen.probeStreamingResponse()untersucht die tatsächlichen Antwort-Header. - Antworten zurückschreiben —
inferSchema(),mergeSchema(),toResponseObject()undwriteBackResponse()leiten Antwortschemata ab und liefern ein aktualisiertes Dokument. Bei erfolgreichem Zurückschreiben gibtsend()dieses standardmäßig alspatchedSpeczurück;writeBack: falsedeaktiviert das Verhalten. Das Eingabedokument bleibt unverändert, und es wird keine Datei automatisch gespeichert. Prüfen Sie vor dem SpeichernwriteBackSkippedReasonundwriteBackWarnings. - Schema-Hilfsfunktionen —
sampleFromSchema()erzeugt Beispieldaten aus einem Schema. - Verzögertes Laden großer Abhängigkeiten — gRPC (
@grpc/grpc-js,@grpc/proto-loader) und MCP (@modelcontextprotocol/sdk) werden erst bei der ersten Verwendung geladen. Bei ausschließlicher HTTP-Nutzung entfällt dieser Ladeaufwand.
Installation
npm install @powerduck/openapi-request
Schnellstart
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",
});
Weitere Schritte
- Installation — Paketstruktur, Unterpfad-Exporte und Peer-Abhängigkeiten für Protokollfunktionen.
- Schnellstart — erste Anfrage, Debugger-Ausführung und manuelle Sitzung.
- Konfiguration —
CreateClientOptions,DebuggerOptionsund protokollspezifische Einstellungen. - API-Referenz — sämtliche Exporte nach Funktionsbereich.
- Beispiele — ausführbare Beispiele für HTTP, SSE, WebSocket, GraphQL, MCP und gRPC.
Lizenz
MIT.