2017-08-28 8 views
7

Je voudrais sauvegarder certains messages Slack dans un backend GraphQL. Je peux utiliser l'API Slack et ce qu'ils appellent "Slack App Commands" de sorte que chaque fois qu'un message est envoyé à mon canal Slack, Slack enverra automatiquement une requête HTTP POST à ​​mon serveur avec le nouveau message en tant que données.Comment envoyer une mutation GraphQL d'un serveur à un autre?

Je pensais utiliser une fonction AWS lambda pour transmettre cette requête post à mon point de terminaison serveur GraphQL (j'utilise GraphCool). Je suis assez nouveau sur GraphQL, j'ai utilisé Apollo pour créer des mutations depuis le navigateur. Maintenant, je dois envoyer une mutation de mon serveur Node (fonction AWS Lambda) au lieu du navigateur. Comment puis-je y parvenir?

Merci.

Répondre

8

Les mutations GraphQL sont simplement des requêtes HTTP POST adressées à un point de terminaison GraphQL. Vous pouvez facilement en envoyer un en utilisant une bibliothèque HTTP telle que request ou axios.

Par exemple, cette mutation,

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

et variable de requête,

$id = 1 

est une requête HTTP POST avec une charge utile JSON de

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

Prenez note que query est votre requête GraphQL en tant que chaîne.

En utilisant axios comme un exemple, vous pouvez envoyer à votre serveur en utilisant quelque chose comme ça,

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

Merci! J'ai finalement utilisé [graphql-request] (https://github.com/graphcool/graphql-request) qui fonctionne bien mais maintenant je comprends mieux comment cela fonctionne. :) –

3

La configuration d'un AWS Lambda reste un exercice pour le lecteur. Pour voir ce que GraphQL interroge (ou dans ce cas, les mutations) votre code client Apollo envoie au serveur, pour couper + coller (et probablement paramétrer) dans votre code lambda, cet outil existe: Apollo GraphQL Dev Tools qui maintenant vous permet de regarder vos mutations en cours d'exécution.