2017-08-28 55 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現在允許您觀察正在執行的突變。

相關問題