Protokolle
Echte Systeme bestehen nicht nur aus REST. Powerduck modelliert sechs Protokolle in gewöhnlichen OpenAPI-Pfadeinträgen über die x-protocol-Erweiterung. Streaming- und RPC-Operationen leben in derselben Spec wie REST, ohne separates Werkzeug oder erzwungene Umwandlung in REST.
Jede Nicht-HTTP-Operation bleibt ein gewöhnlicher Pfadeintrag mit HTTP-Methode und responses."200".description.
graphql,grpc,mcpnutzen post.sse,websocketnutzen meist get.httpist die Standardeinstellung, undx-protocolwird weggelassen.
SSE
Server-Sent Events über HTTP nutzen x-protocol: "sse". Der Streaming-Medientyp ist text/event-stream, und die Nutzlast eines Einzel-Ereignisses beschreiben Sie mit itemSchema, nicht schema.
paths:
/events:
get:
x-protocol: sse
responses:
"200":
description: Event stream
content:
text/event-stream:
itemSchema:
type: object
properties:
type:
type: string
data:
type: string
WebSocket
WebSocket nutzt x-protocol: "websocket" mit einem x-websocket-Block. Die URL muss mit ws:// oder wss:// beginnen.
paths:
/ws:
get:
x-protocol: websocket
x-websocket:
url: wss://example.com/ws
subprotocols: []
headers: {}
subprotocols und headers sind optional.
GraphQL
GraphQL nutzt post auf einem Pfad der Form /graphql/query/fieldName mit x-graphql. Der Endpunkt ist eine absolute HTTP(S)-URL, und die query ist verpflichtend.
paths:
/graphql/query/product:
post:
x-protocol: graphql
x-graphql:
endpoint: https://example.com/graphql
query: query Product($id: ID!) { product(id: ID!) { id name } }
operationName: Product
variablesSchema:
type: object
variables: {}
operationName, variablesSchema und variables sind optional.
gRPC
gRPC nutzt post auf einem Pfad der Form /grpc/pkg.Service/Method mit x-grpc. Wenn der Server Reflexion unterstützt, setzen Sie reflection: true; sonst liefern Sie protoPaths (und optional includeDirs).
paths:
/grpc/products.ProductService/GetProduct:
post:
x-protocol: grpc
x-grpc:
address: host:port
service: products.ProductService
method: GetProduct
kind: unary
reflection: true
kind ist unary, server_streaming, client_streaming oder bidi_streaming.
MCP
MCP nutzt standardmäßig Streamable HTTP, post auf einem Pfad der Form /mcp/tools/tool-name, mit einem x-mcp-Block.
paths:
/mcp/tools/create-product:
post:
x-protocol: mcp
x-mcp:
endpoint: http://127.0.0.1:3000/mcp
transport: streamable-http
method: tools/call
name: create-product
argumentsSchema:
type: object
arguments: {}
method wählt die MCP-Operation: tools/call, tools/list, resources/read, resources/list, resources/templates/list, prompts/get, prompts/list. name, uri, argumentsSchema und arguments kommen je nach Methode zum Einsatz.
Strukturregeln
- Jeder Medientyp unter
requestBodyoderresponsesbrauchtschemaoder$ref, einzige Ausnahmetext/event-streammititemSchema. - Jeder Parameter braucht
schema(odercontent). - Beim Bearbeiten einer Operation bleiben gewähltes Protokoll und Konfiguration erhalten: RPC- oder Streaming-Operationen werden nicht still zu REST.
- Nutzen Sie die genauen Erweiterungsformen oben; erfinden Sie keine Schlüssel wie
externalUrlund nutzenwsnicht als Protokollnamen.
Warum es zählt
Wenn sechs Protokolle in einem Dokument modelliert sind, werden Entwurf, Debugging, Mocking, Doku und MCP unabhängig vom Transport von derselben Quelle gesteuert. Bitten Sie den Assistenten, eine Streaming- oder RPC-Schnittstelle hinzuzufügen, und ihre Protokollkonfiguration bleibt statt zu REST abgeflacht erhalten.
Siehe auch: Mit dem Assistenten entwerfen、Datenmodell.