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

Dam*_*nni 9 lambda apollo aws-lambda graphql graphcool

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

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

谢谢.

das*_*mug 20

GraphQL突变只是对GraphQL端点的HTTP POST请求.您可以使用任何HTTP库轻松发送一个,例如requestaxios.

例如,这个突变,

mutation ($id: Int!) {
  upvotePost(postId: $id) {
    id
  }
}
Run Code Online (Sandbox Code Playgroud)

和查询变量,

$id = 1
Run Code Online (Sandbox Code Playgroud)

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

{
  "query": "mutation ($id: Int!) { upvotePost(postId: $id) { id } } ", 
  "variables": { "id": 1 } 
}
Run Code Online (Sandbox Code Playgroud)

请注意,query您的GraphQL查询是一个字符串.

axios例如,您可以使用以下内容将其发送到您的服务器,

axios({
  method: 'post',
  url: '/graphql',
  // payload is the payload above
  data: payload,
});
Run Code Online (Sandbox Code Playgroud)