Viết Máy chủ GraphQL trong Go

Tram Ho

Tổng quat

Khi công nghệ phát triển, nhu cầu ứng dụng tương tác với nhau cũng tăng lên, đặc biệt là với sự thống trị của nền tảng di động trong năm gần đây. GraphQL cho phép bạn yêu cầu những gì bạn muốn trong một truy vấn duy nhất với tải trọng nhỏ hơn, tiết kiệm băng thông và giảm yêu cầu thác nước. Nó cũng cho phép khách hàng yêu cầu các đặc tả dữ liệu duy nhất của riêng họ.

Trong bài đăng này, chúng ta sẽ xem xét cách viết một ứng dụng máy chủ GraphQL trong Go bằng cách sử dụng danh sách Todo truyền thống làm ví dụ. Chúng ta sẽ xem xét cách xác định lược đồ GraphQL và kết nối nó qua HTTP.

Dịch vụ Todo

Đầu tiên, hãy xác định logic nghiệp vụ của chúng tôi sẽ hiển thị hai phương thức ListTodos , GetTodo và kiểu Todo như bên dưới.

Tất cả các mục việc cần làm được lưu trữ trong một tệp JSON có tên là todos.json và sẽ được tải trong quá trình khởi động ứng dụng và với giao diện này cho phép triển khai ở trên.

Việc triển khai dịch vụ khá đơn giản, không có gì phải giải thích ở đây và với điều này, chúng ta có thể chuyển sang phần quan trọng về cách xác định lược đồ GraphQL.

Lược đồ GraphQL

Đầu tiên, hãy xác định một kiểu lược đồ đối tượng để phản ánh cấu trúc Todo của chúng ta. Chúng tôi thực hiện điều này với hàm NewObject từ gói graphql-go / graphql .

Đối tượng này sẽ có ba trường id , tênhoàn thành với kiểu dữ liệu tương ứng với trường cấu trúc Todo của chúng ta tương ứng. Chức năng giải quyết là để lọc ra trường cụ thể theo danh sách trường từ truy vấn của GraphQL đến chẳng hạn

Tiếp theo là cách xác định lược đồ truy vấn. Vì mục đích của ứng dụng ví dụ này, chúng ta sẽ tiếp xúc với hai truy vấn tên todostodo với người đầu tiên là liệt kê tất cả các mục todo và người cuối cùng là để có được mục todo cụ thể bằng cách cung cấp id như là đối số truy vấn.

Như bạn có thể thấy rằng logic thực tế để lấy danh sách việc cần làm là bằng cách gọi các phương thức máy chủ của chúng tôi mà chúng tôi đã xác định trong phần trên trong hàm giải quyết của từng truy vấn svc.ListTodossvc.GetTodo . svc sẽ được chuyển vào dưới dạng đối số để tạo hàm createSchema sẽ biên dịch lược đồ được xác định như thế này

Kết nối GraphQL với HTTP

Cuối cùng nhưng không kém phần quan trọng là hiển thị điểm cuối graphql trên http. Chúng tôi có thể viết triển khai máy chủ http của riêng mình để chuyển đổi yêu cầu và phản hồi qua lại nhưng có một gói đã thực hiện điều đó cho chúng tôi được gọi là graphql-go / handler , vì vậy hãy sử dụng nó.

Tùy chọn Playground chỉ dành cho mục đích phát triển, với nó có thể phát xung quanh truy vấn khi chúng ta truy cập vào http: // localhost: 8080 / graphql

Chức năng chính hoàn chỉnh sẽ trông như thế này

Thao tác cuối cùng là mở điểm cuối và chơi xung quanh nó như hình ảnh bên dưới và thế là xong !. Kiểm tra liên kết đến hai gói để biết thêm tài liệu về cách xác định lược đồ phức tạp.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo