Skip to content

範例

這個 repository 的 examples/ 底下有十四個完整範例。每個目錄有三個檔案:TypeSpec 原始碼、編譯時用的 tspconfig.yaml,以及 emitter 產生的 asyncapi.yaml

輸出已經 commit,所以不必執行任何東西就能對照輸入與輸出。十四份都通過官方 AsyncAPI parser。

範例一覽

範例內容
Hello world最小可用的完整文件。只有 @service@info
Payload schemasschema 層的各種形狀:model、scalar、enum、陣列、record,以及它們的限制。
Schema composition用既有 schema 組出新 schema 的四種方式,以及 raw schema 逃生口。
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 齊全。
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- 欄位,四種能承載它的物件各一例。

執行其中一個

複製這個 repository,然後在想看的目錄裡編譯:

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 的是否一致。

TIP

每份 main.tsp 開頭都是 import "../..";,指向這個 repository 的根目錄。在你自己的專案裡,改為依賴套件並寫 import "tsp-asyncapi";