web-dev-qa-db-ja.com

あるサーバーから別のサーバーにGraphQLミューテーションを送信する方法は?

SlackメッセージをGraphQLバックエンドに保存したいと思います。 Slack APIと「Slackアプリコマンド」と呼ばれるものを使用できるので、メッセージがSlackチャネルに送信されるたびに、Slackは新しいメッセージとともにHTTP POSTリクエストをサーバーに自動的に送信します。データとして。

AWSラムダ関数を使用してこのPOSTリクエストをGraphQLサーバーエンドポイントに転送することを考えていました(私はGraphCoolを使用しています)。私はGraphQLにかなり慣れていないので、Apolloを使用してブラウザーからミューテーションを作成しました。次に、ブラウザーではなくNodeサーバー(AWS Lambda関数)からミューテーションを送信する必要があります。どうすればそれを実現できますか?

ありがとう。

10
Damien Monni

GraphQLミューテーションは、単にHTTP POST GraphQLエンドポイントへのリクエストです。requestaxiosなどのHTTPライブラリを使用して簡単に送信できます。

たとえば、この突然変異は、

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

およびクエリ変数、

$id = 1

はHTTP POSTリクエストで、JSONペイロードは

{
  "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,
});
22
dashmug

AWS Lambdaのセットアップは、読者の演習として残されています。

Apolloクライアントコードがサーバーに送信しているGraphQLクエリ(この場合はミューテーション)を確認するために、ラムダコードにカット+ペースト(およびおそらくパラメーター化)するために、このツールが存在します: Apollo GraphQL Dev Tools これにより、実行されているミューテーションを監視できるようになりました。

1
Ed.