SlackメッセージをGraphQLバックエンドに保存したいと思います。 Slack APIと「Slackアプリコマンド」と呼ばれるものを使用できるので、メッセージがSlackチャネルに送信されるたびに、Slackは新しいメッセージとともにHTTP POSTリクエストをサーバーに自動的に送信します。データとして。
AWSラムダ関数を使用してこのPOSTリクエストをGraphQLサーバーエンドポイントに転送することを考えていました(私はGraphCoolを使用しています)。私はGraphQLにかなり慣れていないので、Apolloを使用してブラウザーからミューテーションを作成しました。次に、ブラウザーではなくNodeサーバー(AWS Lambda関数)からミューテーションを送信する必要があります。どうすればそれを実現できますか?
ありがとう。
GraphQLミューテーションは、単にHTTP POST GraphQLエンドポイントへのリクエストです。request
やaxios
などの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,
});
AWS Lambdaのセットアップは、読者の演習として残されています。
Apolloクライアントコードがサーバーに送信しているGraphQLクエリ(この場合はミューテーション)を確認するために、ラムダコードにカット+ペースト(およびおそらくパラメーター化)するために、このツールが存在します: Apollo GraphQL Dev Tools これにより、実行されているミューテーションを監視できるようになりました。