使用 Postman 测试 Appsync 订阅

Use Postman to test Appsync Subscription

我已经能够从 Postman 成功执行 Appsync GraphQL 查询和变更。但是,我正在努力连接到作为 websocket url 的订阅。

我怎样才能达到同样的效果?

由于 Postman 支持 WebSockets,测试 GraphQL 订阅也是可以实现的。这样的测试需要两个步骤:

  • 连接到服务器,
  • 正在发送 start 消息。

正在建立连接:

  1. 创建一个新的 WebSocket 请求。
  2. 把你的服务器 URL ws:// 或者 wss://.
  3. 添加自定义 header 参数 Sec-WebSocket-Protocol: graphql-ws。其他 header 可能取决于您的服务器配置。
  4. 按“连接”按钮。


建立连接后,我们可以开始订阅。

  1. 在“新消息”字段中输入命令。
  2. 按“发送”按钮。

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。