如何将 GraphQL 突变从一台服务器发送到另一台服务器?

How to send GraphQL mutation from one server to another?

我想将一些 Slack 消息保存到 GraphQL 后端。我可以使用 Slack API 和他们所说的 "Slack App Commands" 所以每次消息发送到我的 Slack 频道时,Slack 都会自动向我的服务器发送一个 HTTP POST 请求,新消息为数据.

我正在考虑使用 AWS lambda 函数将此 post 请求转发到我的 GraphQL 服务器端点(我正在使用 GraphCool)。我是 GraphQL 的新手,我使用 Apollo 从浏览器创建突变。现在我需要从我的节点服务器(AWS Lambda 函数)而不是浏览器发送突变。我怎样才能做到这一点?

谢谢。

设置 AWS Lambda 留作 reader 的练习。

要查看您的 Apollo 客户端代码正在向服务器发送哪些 GraphQL 查询(或在本例中为突变),用于剪切+粘贴(以及可能的参数化)到您的 lambda 代码中,存在此工具:Apollo GraphQL Dev Tools 现在允许您观察正在执行的突变。

GraphQL 变更只是对 GraphQL 端点的 HTTP POST 请求。您可以使用 requestaxios.

等任何 HTTP 库轻松发送一个

比如这个突变,

mutation ($id: Int!) {
  upvotePost(postId: $id) {
    id
  }
}

和查询变量,

$id = 1

是一个 HTTP POST 请求,JSON 负载为

{
  "query": "mutation ($id: Int!) { upvotePost(postId: $id) { id } } ", 
  "variables": { "id": 1 } 
}

请注意,query 是字符串形式的 GraphQL 查询。

axios 为例,您可以使用类似这样的方式将其发送到您的服务器,

axios({
  method: 'post',
  url: '/graphql',
  // payload is the payload above
  data: payload,
});