2017-08-28 59 views
7

我想将一些Slack消息保存到GraphQL后端。我可以使用Slack API和他们称之为“Slack App Commands”的消息,因此每次消息发送到我的Slack频道时,Slack会自动发送一个HTTP POST请求到我的服务器,并将新消息作为数据。如何将GraphQL突变从一台服务器发送到另一台服务器?

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

谢谢。

回答

8

GraphQL突变仅仅是对GraphQL端点的HTTP POST请求。您可以使用任何HTTP库(如requestaxios)轻松发送一个。

例如,这种突变,

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

和查询变量,

$id = 1 

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

注意到一个JSON有效载荷query是HTTP POST请求你的GraphQL查询是一个字符串。

使用axios作为一个例子,你可以使用这样的事情发送给你的服务器,

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

谢谢!我finaly使用[graphql-request](https://github.com/graphcool/graphql-request)极好的工作,但现在我更好地理解它是如何工作的。 :) –

3

设置AWS Lambda作为读者的练习。

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

相关问题