- vừa được xem lúc

Khi nào chúng ta nghĩ đến Graphql

0 0 1

Người đăng: Nguyễn Trung Nam

Theo Viblo Asia

1. Nhu cầu thực tế

Hãy tưởng tượng có một chiếc máy bán hàng tự động. Để lấy một món đồ, chúng ta bấm một nút. Để lấy một món khác, chúng ta lại bấm một nút khác. Tương tự, nếu muốn lấy năm món đồ, chúng ta phải bấm năm nút khác nhau. Đây chính là cách tiếp cận của REST. Mỗi khi cần một phần dữ liệu, phía client sẽ thực hiện một yêu cầu mới. Quy trình này trở nên phức tạp và bất tiện khi chúng ta có thêm nhu cầu cần tổng hợp dữ liệu từ nhiều nguồn khác nhau trong hệ thống. Để giải quyết vấn đề này, anh em developer thường chọn một trong hai cách:

  1. Tổng hợp dữ liệu được thực hiện tại phía client quả bóng lúc này đã lăn đến chân của anh em mobile, web.
  2. Tạo các endpoint REST đặc biệt, nơi dữ liệu được tổng hợp tại tầng dịch vụ (service layer) và cung cấp một interface duy nhất cho client.

Thông thường mình sẽ ưu tiên lựa chọn cách (2) cho mọi yêu cầu bài toán để dễ dàng kiểm soát và dễ maintain. Những endpoint đặc biệt này tương tự như việc máy bán hàng tự động có các nút đặc biệt để chọn một tổ hợp món đồ nhất định. Mỗi nút đặc biệt xử lý một tổ hợp yêu cầu cụ thể. Nhưng câu hỏi đặt ra là: Chúng ta sẽ tạo bao nhiêu nút đặc biệt như vậy? Có thể có hàng trăm tổ hợp món đồ khác nhau. Ngay cả khi tạo ra hàng trăm nút, chúng ta không bao giờ chắc chắn rằng sẽ không có một khách hàng mới cần một tổ hợp cụ thể mà chúng ta chưa nghĩ đến. Vậy nên cách tiếp cận này không thể mở rộng.

Nhưng điều gì sẽ xảy ra nếu máy bán hàng tự động hỗ trợ tùy chọn chọn nhiều món cùng lúc chỉ bằng cách nhấn tổ hợp nút? Điều này giống như việc người dùng chỉ rõ cho máy chính xác những gì họ cần. Sau khi đặt hàng, người dùng nhận được tất cả những gì họ yêu cầu chỉ trong một lần hành động.

=> Đây cũng chính là bản chất của cách GraphQL hoạt động. Phía client chỉ cần chỉ rõ những gì nó cần, và GraphQL sẽ cung cấp tất cả dữ liệu trong một lần. Không cần thực hiện nhiều yêu cầu để thu thập dữ liệu nữa.

2. Thông tin kết nối

Nếu anh em muốn trao đổi thêm về bài viết, hãy kết nối với mình qua LinkedIn và Facebook:

Rất mong được kết nối và cùng thảo luận!

Bình luận

Bài viết tương tự

- vừa được xem lúc

GraphQL SDL - Schema Definition Language Phần 2

Nối tiếp Phần một về Schema Difinition Language của GraphQL, bài viết này trình bày tiếp các khái niệm được sử dụng để định nghĩa GraphQL Schema. 1. Interfaces. .

0 0 77

- vừa được xem lúc

GraphQL SDL - Schema Definition Language Phần 1

1. GraphQL Schema Difinition Language là gì. SDL là một ngôn ngữ có cú pháp rất đơn giản, dễ hiểu đồng thời cũng rất mạnh mẽ và trực quan giúp định nghĩa schema một các cô đọng nhất. id: String.

0 0 62

- vừa được xem lúc

Mini Apollo GraphQL React client - server

Chào anh em, lại là mình đây . Hôm nay mình lại tiếp tục đi đến một chủ đề khá thú vị, cực kì phù hợp cho các anh em thích nghịch ngợm và cũng đơn giản để có thiển triển khai các pet project trong tương lai.

0 0 36

- vừa được xem lúc

Dgraph Graph Database in 100 Seconds

Learn the fundamentals of Dgraph - an open-source Graph Database that implements GraphQL as its query language https://bit.ly/3qc2Nac. . #database #graphql #100SecondsOfCode.

0 0 42

- vừa được xem lúc

Thực thi truy vấn GraphQL trên Server

1. Giới thiệu chung. . .

0 0 102

- vừa được xem lúc

Hasura in 100 Seconds

Learn how Hasura can instantly turn your SQL database into a GraphQL API. https://github.com/hasura/graphql-engine. .

0 0 45