Cách sử dụng các điểm cuối API GraphQL trong Go

Cách sử dụng các điểm cuối API GraphQL trong Go

Ngôn ngữ truy vấn đồ thị (GraphQL) là một ngôn ngữ và đặc điểm kỹ thuật để tương tác với các API GraphQL, một kiến ​​trúc máy khách-máy chủ dựa trên HTTP để giao tiếp trên web.





Facebook đã phát hành GraphQL như một giải pháp thay thế cho tiêu chuẩn kiến ​​trúc REST. GraphQL giải quyết hầu hết các vấn đề với REST theo cách không trạng thái và có thể lưu vào bộ nhớ cache. Nó cung cấp một cú pháp đơn giản và trực quan mô tả (các) đầu ra hoặc (các) đầu vào dự kiến ​​và API chuyển tiếp dữ liệu phù hợp với yêu cầu.





LÀM VIDEO TRONG NGÀY

Vì GraphQL là một đặc tả, bạn có thể xây dựng và sử dụng các API GraphQL bằng bất kỳ ngôn ngữ lập trình phía máy chủ nào, bao gồm cả Go.





Bắt đầu với API GraphQL trong Go

GraphQL dựa trên kiến ​​trúc HTTP và Go cung cấp chức năng HTTP trong http bưu kiện.

Bạn có thể dùng http gói đến sử dụng các API RESTful trong Go , trong số các tính năng khác. Đối với GraphQL, bạn có thể thực hiện các truy vấn và đột biến đối với các máy chủ API GraphQL với http gói và các gói tích hợp khác.



  phần tổng quan của gói Go HTTP

Các gói ứng dụng khách GraphQL như Hộp máy hoặc shurCooL's làm cho quá trình tương tác với các API GraphQL dễ dàng hơn.

Bạn có thể dùng http gói không có bất kỳ phụ thuộc nào để tương tác với API GraphQL. Nhập các gói này vào tệp Go của bạn để bắt đầu:





làm thế nào để hoàn trả trò chơi trên ps4
import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
)

Bạn sẽ sử dụng byte gói để tạo bộ đệm mới cho yêu cầu và json gói để điều phối một bản đồ đến phần thân yêu cầu JSON. Bạn có thể dùng ioutil để đọc nội dung phản hồi và thời gian gói để đặt giới hạn thời gian cho yêu cầu.

Truy vấn API GraphQL với Go

Có rất nhiều API GraphQL công khai miễn phí mà bạn có thể truy vấn và tích hợp vào các ứng dụng của mình. Đối với bài viết này, bạn sẽ truy vấn API quốc gia của Apollo GraphQL để truy vấn dữ liệu về các quốc gia trên toàn thế giới.





Tất cả các hoạt động GraphQL thường là yêu cầu POST vì chúng phải có trọng tải (nội dung yêu cầu). Hầu hết các API GraphQL chấp nhận nội dung yêu cầu JSON làm loại nội dung và Go cung cấp chức năng sử dụng bản đồ và cấu trúc để làm việc với JSON .

Bạn sẽ cần nghiên cứu cấu trúc của lược đồ GraphQL để truy vấn API. Truy vấn sẽ giống như truy vấn GraphQL thông thường ngoại trừ thao tác (truy vấn hoặc đột biến) là khóa và dữ liệu là giá trị của bản đồ.

Đây là cách bạn có thể khai báo một phiên bản bản đồ JSON mà bạn sẽ điều chỉnh thành JSON cho yêu cầu.

windows tạo usb boot từ iso
jsonMapInstance := map[string]string { 
"query": `
{
countries {
name,
phone,
currency,
code,
emoji
}
}
`,
}

Các jsonMapInstance biến là phiên bản bản đồ cho nội dung của yêu cầu. Giá trị là một chuỗi dữ liệu truy vấn mà bạn đang mong đợi từ API. Trong trường hợp này, dữ liệu truy vấn bạn sẽ mong đợi từ API của Quốc gia lược đồ là Tên , điện thoại , tiền tệ , mã số , và biểu tượng cảm xúc lĩnh vực.

Bạn có thể dùng Soái ca phương pháp của json gói để mã hóa phiên bản bản đồ thành JSON. Các Soái ca phương thức trả về JSON được mã hóa và một lỗi đối với các trường hợp có sự cố mã hóa.

jsonResult, err := json.Marshal(jsonMapInstance) 

if err != nil {
fmt.Printf("There was an error marshaling the JSON instance %v", err)
}

Sau khi mã hóa bản đồ thành JSON, bạn có thể gửi yêu cầu ĐĂNG tới API. Bạn có thể tạo một phiên bản yêu cầu mới với Yêu cầu mới phương thức này nhận loại yêu cầu, URL và bộ đệm JSON.

Các Yêu cầu mới phương thức trả về một cá thể yêu cầu. Bạn sẽ phải đặt loại nội dung tùy thuộc vào thông số kỹ thuật của API. Bạn có thể đặt loại nội dung cho các yêu cầu HTTP với Bộ phương pháp của Tiêu đề phương pháp của trường hợp yêu cầu của bạn.

newRequest, err := http.NewRequest("POST", "https://countries.trevorblades.com/graphql", bytes.NewBuffer(jsonResult)) 
newRequest.Header.Set("Content-Type", "application/json")

Bạn có thể tạo một ứng dụng HTTP đơn giản cho yêu cầu của mình với Khách hàng phương thức của gói HTTP. Các Khách hàng phương pháp này cũng cho phép bạn đặt giới hạn thời gian cho yêu cầu của mình với thời gian bưu kiện.

không có internet, cửa sổ bảo mật 10
 
client := &http.Client{Timeout: time.Second * 5}
response, err := client.Do(newRequest)

if err != nil {
fmt.Printf("There was an error executing the request%v", err)
}

Sau khi bạn đã khai báo ứng dụng HTTP, hãy thực thi yêu cầu API của bạn với Làm phương pháp. Các Làm phương thức chấp nhận cá thể yêu cầu và trả về phản hồi và một lỗi.

Bạn có thể đọc phản hồi của yêu cầu API với ioutil gói hàng Đọc hết phương pháp. Nó đưa vào một luồng đầu ra và trả về một lát byte của dữ liệu với một lỗi mà bạn có thể xử lý.

responseData, err := ioutil.ReadAll(response.Body) 

if err != nil {
fmt.Printf("Data Read Error%v", err)
}

Với chức năng chuỗi tích hợp, bạn có thể chuyển đổi phản hồi lát byte thành kiểu chuỗi.

fmt.Println(string(responseData)) 

Dưới đây là phản hồi cho thấy kết quả của yêu cầu API:

  Đầu ra từ truy vấn API GraphQL hiển thị danh sách các quốc gia và các trường được yêu cầu của họ.

Tiêu thụ các API RESTful cũng giống như tiêu thụ các API GraphQL

Vì cả API REST và GraphQL đều sử dụng giao thức HTTP, nên việc sử dụng mỗi API là một quá trình rất giống nhau và bạn có thể sử dụng http gói cho cả hai trường hợp.

Bạn sẽ cần tạo máy khách, yêu cầu phiên bản và đọc dữ liệu với các gói giống nhau.