使用 Postman 测试 Appsync 订阅
Use Postman to test Appsync Subscription
我已经能够从 Postman 成功执行 Appsync GraphQL 查询和变更。但是,我正在努力连接到作为 websocket url 的订阅。
我怎样才能达到同样的效果?
由于 Postman 支持 WebSockets,测试 GraphQL 订阅也是可以实现的。这样的测试需要两个步骤:
- 连接到服务器,
- 正在发送
start
消息。
正在建立连接:
- 创建一个新的 WebSocket 请求。
- 把你的服务器 URL
ws://
或者 wss://
.
- 添加自定义 header 参数
Sec-WebSocket-Protocol: graphql-ws
。其他 header 可能取决于您的服务器配置。
- 按“连接”按钮。
建立连接后,我们可以开始订阅。
- 在“新消息”字段中输入命令。
- 按“发送”按钮。
start
消息应如下所示:
{
"id":"1",
"payload": {
"operationName": "MySubscription",
"query": "subscription MySubscription {
someSubscription {
__typename
someField1
someField2 {
__typename
someField21
someField22
}
}
}",
"variables": null
},
"type": "start"
}
operationName
只是您订阅的名称,我想它是可选的。 someSubscription
必须是您架构中的订阅类型。
query
提醒常规 GraphQL 语法有一个区别:
__typename
关键字在每个字段列表之前。
例如,来自有效负载的常规语法查询如下所示:
subscription MySubscription {
someSubscription {
someField1
someField2 {
someField21
someField22
}
}
}
带有参数(变量)的消息示例:
{
"id":"1",
"payload": {
"operationName": "MySubscription",
"query": "subscription MySubscription($param1: String!) {
someSubscription((param1: $param1)) {
__typename
someField
}
}",
"variables": {
"param1": "MyValue"
}
},
"type": "start"
}
它还会提醒如上所述的常规 GraphQL 语法。
variables
是带有您的参数的 object。
我已经能够从 Postman 成功执行 Appsync GraphQL 查询和变更。但是,我正在努力连接到作为 websocket url 的订阅。
我怎样才能达到同样的效果?
由于 Postman 支持 WebSockets,测试 GraphQL 订阅也是可以实现的。这样的测试需要两个步骤:
- 连接到服务器,
- 正在发送
start
消息。
正在建立连接:
- 创建一个新的 WebSocket 请求。
- 把你的服务器 URL
ws://
或者wss://
. - 添加自定义 header 参数
Sec-WebSocket-Protocol: graphql-ws
。其他 header 可能取决于您的服务器配置。 - 按“连接”按钮。
建立连接后,我们可以开始订阅。
- 在“新消息”字段中输入命令。
- 按“发送”按钮。
start
消息应如下所示:
{
"id":"1",
"payload": {
"operationName": "MySubscription",
"query": "subscription MySubscription {
someSubscription {
__typename
someField1
someField2 {
__typename
someField21
someField22
}
}
}",
"variables": null
},
"type": "start"
}
operationName
只是您订阅的名称,我想它是可选的。 someSubscription
必须是您架构中的订阅类型。
query
提醒常规 GraphQL 语法有一个区别:
__typename
关键字在每个字段列表之前。
例如,来自有效负载的常规语法查询如下所示:
subscription MySubscription {
someSubscription {
someField1
someField2 {
someField21
someField22
}
}
}
带有参数(变量)的消息示例:
{
"id":"1",
"payload": {
"operationName": "MySubscription",
"query": "subscription MySubscription($param1: String!) {
someSubscription((param1: $param1)) {
__typename
someField
}
}",
"variables": {
"param1": "MyValue"
}
},
"type": "start"
}
它还会提醒如上所述的常规 GraphQL 语法。
variables
是带有您的参数的 object。