11

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

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

谢谢。

4

2 回答 2

33

GraphQL 突变只是对 GraphQL 端点的 HTTP POST 请求。您可以使用任何 HTTP 库(例如requestaxios.

例如,这种突变,

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

和查询变量,

$id = 1

是一个带有 JSON 有效负载的 HTTP POST 请求

{
  "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,
});
于 2017-09-15T16:52:22.653 回答
1

设置 AWS Lambda 留给读者作为练习。

要查看您的 Apollo 客户端代码发送到服务器的 GraphQL 查询(或在这种情况下为突变),以剪切+粘贴(并且可能是参数化)到您的 lambda 代码中,此工具存在:Apollo GraphQL Dev Tools现在允许你观察你的突变被执行。

于 2017-09-15T16:18:48.180 回答