【问题标题】:How to send GraphQL mutation from one server to another?如何将 GraphQL 突变从一台服务器发送到另一台服务器?
【发布时间】:2018-02-05 20:10:36
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: lambda aws-lambda graphql apollo graphcool


    【解决方案1】:

    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,
    });
    

    【讨论】:

    • 谢谢!我最终使用了graphql-request,它工作得很好,但现在我更好地理解了它是如何工作的。 :)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2013-12-03
      • 2015-06-25
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多