Skip to content

範例

examples/ 底下每個目錄都是一個能直接編譯的專案,含 TypeSpec 原始碼、編譯時用的 tspconfig.yaml,以及編出來的輸出。輸出已經 commit,不必執行任何東西就能對照輸入與輸出。

範例一覽

範例內容
Hello world最小可用的完整文件。只有 @service@info
Payload schemasschema 層的各種形狀:model、scalar、enum、陣列、record,以及它們的限制。
Schema composition用既有 schema 組出新 schema 的四種方式,以及沒有專屬 decorator 時用的 @jsonSchemaExtension
Message metadatapayload 周邊的一切:headers、correlation id、範例、tag 與連結。
Channels and parameterschannel id、位址模板,以及位址宣告的參數。
Servers and securityserver、server 變數,以及 server 提供的安全機制。
Request and reply三個 operation,以及 AsyncAPI 回覆的兩種形態。
Kafka user signup一份真實的 Kafka 契約,四層 Kafka binding 齊全,另有 Avro 與 Protobuf payload。
MQTT bindings三個 MQTT decorator,以及通用 @binding 現在唯一適用的名稱類型。
StreetlightsAsyncAPI 官方經典範例的 TypeSpec 版。
Multiple protocols同一個應用、同一個 payload model,同時走 Kafka、WebSocket 與 SQS。
HTTP callbackswebhook 上的 HTTP binding,包含回覆的 statusCode
Enterprise brokersAMQP、JMS、IBM MQ 與 Anypoint MQ 用四種方式描述同一個目的地。
Streaming platformsNATS、Pulsar、Google Cloud Pub/Sub 與 Solace,以及各自的必填欄位。
規格擴充規格留給作者自己填的 x- 欄位,四種能承載它的物件各一例。
Protobuf payload兩個 Protobuf package 走 RabbitMQ,.proto 檔案與文件一起輸出。
Avro schema一個訂單領域寫成 Avro schema 檔案,由 tsp-avro 產生,沒有 AsyncAPI 文件。
Avro payload兩個 Avro record 走 Kafka,.avsc 檔案與文件寫在一起。

執行其中一個

把 repository clone 下來,在想看的目錄裡編譯:

bash
git clone https://github.com/marvin-hsu/tsp-asyncapi.git
cd tsp-asyncapi
pnpm install && pnpm build
cd examples/01-hello-world
pnpm exec tsp compile .

emitter 會把 asyncapi.yaml 寫在 main.tsp 旁邊,覆蓋 repository 裡的那一份。接著用 git diff 就能看出你建置出來的結果和 commit 的是否一致。