如何将GraphQL变异从一个服务器发送到另一个服务器?

时间:2017-08-28 14:07:51

标签: lambda aws-lambda graphql apollo graphcool

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

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

感谢。

2 个答案:

答案 0 :(得分:16)

GraphQL突变只是对GraphQL端点的HTTP POST请求。您可以使用任何HTTP库轻松发送一个,例如<ul class="select2-results__options" role="tree" id="select2-upsell_ids-results"> <li class="select2-results__option">first (#404)</li> <li class="select2-results__option" >second (#496)</li> <li class="select2-results__option">abc (#2482)</li> <li class="select2-results__option">defg (#2484)<span class="description">Size: 47</span></li> <li class="select2-results__option">hil (#2485)<span class="description">Size: 46,5</span></li> </ul>request

例如,这种突变,

axios

和查询变量,

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

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

$id = 1

请注意,{ "query": "mutation ($id: Int!) { upvotePost(postId: $id) { id } } ", "variables": { "id": 1 } } 是您的GraphQL查询字符串。

使用query作为示例,您可以使用类似的内容将其发送到您的服务器,

axios

答案 1 :(得分:2)

设置AWS Lambda是留给读者的练习。

要了解您的Apollo客户端代码发送到服务器的GraphQL查询(或者在本例中为突变),为了切割+粘贴(并且可能是参数化)到您的lambda代码中,此工具存在:{{3}现在可以让你观察正在执行的突变。