用CLI工具验证GraphQL订阅的运行使用CLI命令来验证GraphQL订阅的操作情况
首先
这篇文章是一休网2023年Advent Calendar的第2篇文章。
在实现GraphQL订阅字段时,通常可以通过GUI进行功能验证。我通常在Apollo Studio中开发时,同时浏览下面的界面。
然而,作为一名工程师,也希望能够通过CLI进行确认。因此,本次将介绍如何使用CLI进行GraphQL订阅的操作确认,作为一个小技巧。
环境
-
- GraphQLサーバーフレームワーク: Apollo Server
-
- プロトコル: websocket
- websocketライブラリ: graphql-ws
操作步骤 (Caozuo buzhou)
-
- 使用 wscat 进行连接
-
- wscat -s graphql-transport-ws -c ws://127.0.0.1/graphql
-
- 已连接(按下 CTRL+C 退出)
在超时之前急忙发送 init 消息
> {“type”: “connection_init”}
< {“type”:”connection_ack”} 发送查询 > {“id”:”hoge”,”type”:”subscribe”,”payload”:{“query”:”subscription ($restaurantId: Int!, $groupId: String!, $date: Date!) {\n group(groupId: $groupId) {\n restaurant(restaurantId: $restaurantId) {\n operatingDay(date: $date) {\n reservations {\n reservationId\n visitDateTime {\n begin\n end\n }\n guest {\n name\n }\n }\n }\n }\n }\n}”,”variables”:{“restaurantId”:***,”groupId”:”ikyu”,”date”: “2023-12-02”}}}
< {“id”:”hoge”,”type”:”next”,”payload”:{“data”:{“group”:{“restaurant”:{“operatingDay”:{“reservations”:[]}}}}}}
触发 publish 并接收更新的结果
< {“id”:”hoge”,”type”:”next”,”payload”:{“data”:{“group”:{“restaurant”:{“operatingDay”:{“reservations”:[{“reservationId”:”32a88f68-71fc-4492-aba5-4d2171b3f87e”,”visitDateTime”:{“begin”:”2023-12-02T11:00:00.000Z”,”end”:”2023-12-02T13:00:00.000Z”},”guest”:{“name”:”ミーア・ルーナ・ティアムーン”}}]}}}}}}
感受
如果有一种工具能够包装并以透明的方式处理wscat,使其在GraphQL文本上容易使用,那么我认为即使在GraphQL上下文中,wscat这个具有独特对话接口的程序也可以很好地使用。如果您知道或制作了这样的工具,请告诉我。
参考可以是一个有效的资源或指南,用于获取有关特定主题的信息或建议。