2017-08-28 24 views
7

Tôi muốn lưu một số tin nhắn Slack vào một phụ trợ GraphQL. Tôi có thể sử dụng Slack API và những gì họ gọi là "Slack App Commands" nên mỗi khi một tin nhắn được gửi đến kênh Slack của tôi, Slack sẽ tự động gửi một yêu cầu HTTP POST tới máy chủ của tôi với thông điệp mới dưới dạng dữ liệu.Làm cách nào để gửi đột biến GraphQL từ máy chủ này sang máy chủ khác?

Tôi đã suy nghĩ sử dụng một hàm lambda AWS để chuyển tiếp yêu cầu đăng bài này đến điểm cuối máy chủ GraphQL của tôi (tôi đang sử dụng GraphCool). Tôi khá mới với GraphQL, tôi đã sử dụng Apollo để tạo đột biến từ trình duyệt. Bây giờ tôi cần phải gửi đột biến từ máy chủ Node của tôi (chức năng AWS Lambda) thay vì trình duyệt. Làm thế nào tôi có thể đạt được điều đó?

Cảm ơn.

Trả lời

8

Đột biến đồ thị chỉ đơn giản là yêu cầu POST HTTP đến điểm cuối GraphQL. Bạn có thể dễ dàng gửi một bằng cách sử dụng bất kỳ thư viện HTTP nào như request hoặc axios.

Ví dụ, đột biến này,

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

và biến truy vấn,

$id = 1 

là một yêu cầu HTTP POST với một tải trọng JSON của

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

Hãy lưu ý rằng query là truy vấn GraphQL của bạn dưới dạng chuỗi.

Sử dụng axios làm ví dụ, bạn có thể gửi thông điệp này đến máy chủ của bạn sử dụng một cái gì đó như thế này,

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

Cảm ơn bạn! Tôi cuối cùng sử dụng [graphql-yêu cầu] (https://github.com/graphcool/graphql-request) mà hoạt động tốt nhưng bây giờ tôi hiểu tốt hơn cách hoạt động. :) –

3

Thiết lập AWS Lambda được để làm bài tập cho người đọc.

Để xem các truy vấn GraphQL (hoặc trong trường hợp này, đột biến) mã khách hàng Apollo của bạn đang gửi tới máy chủ, để cắt + dán (và có lẽ là tham số) vào mã lambda của bạn, công cụ này tồn tại: Apollo GraphQL Dev Tools cho phép bạn xem các đột biến của bạn đang được thực hiện.

Các vấn đề liên quan