Hướng dẫn GraphQL cho người mới bắt đầu: Là gì, tính năng và ví dụ
GraphQL là gì?
GraphQL là công nghệ phía máy chủ lớp ứng dụng được Facebook phát triển để thực hiện các truy vấn với dữ liệu hiện có. GraphQL có thể tối ưu hóa lệnh gọi API RESTful. Nó cung cấp một cách khai báo để tìm nạp và cập nhật dữ liệu của bạn. GraphQL giúp bạn tải dữ liệu từ máy chủ đến máy khách. Nó cho phép các lập trình viên chọn loại yêu cầu mà họ muốn thực hiện.
Tại sao nên sử dụng GraphQL?
Sau đây là những lý do nên sử dụng GraphQL:
- Nó cung cấp một truy vấn có thể đọc được.
- Trong GraphQL, rất dễ dàng để xử lý nhiều cơ sở dữ liệu.
- Phù hợp với các dịch vụ siêu nhỏ và hệ thống phức tạp.
- Bạn có thể tìm nạp dữ liệu chỉ bằng một lệnh gọi API.
- Nó giúp bạn xử lý các truy vấn và bộ nhớ đệm.
- Bạn không phải đối mặt với các vấn đề về tìm nạp.
- Điều chỉnh yêu cầu theo nhu cầu của bạn.
- Nó giúp bạn khám phá lược đồ ở định dạng thích hợp.
- GraphQL tự động đồng bộ hóa tài liệu với những thay đổi của API.
- Có thể tiến hóa API mà không cần lập phiên bản.
- Các trường GraphQL được sử dụng trong nhiều truy vấn có thể được chia sẻ lên cấp thành phần cao hơn để sử dụng lại.
- Bạn có thể chọn chức năng nào sẽ hiển thị và cách chúng hoạt động.
- Nó có thể được sử dụng để tạo nguyên mẫu ứng dụng nhanh chóng.
Ứng dụng của GraphQL
Dưới đây là các ứng dụng quan trọng của GraphQL:
- Nó cung cấp Rơle và các khung máy khách khác
- GraphQL giúp bạn cải thiện hiệu suất của ứng dụng di động.
- Nó có thể giảm vấn đề tìm nạp quá mức để hạ thấp dịch vụ đám mây phía máy chủ và giảm mức sử dụng mạng, phía máy khách.
- Nó có thể được sử dụng khi ứng dụng khách phải chỉ định trường nào là cần thiết ở định dạng truy vấn dài.
- GraphQL có thể được tận dụng tối đa khi bạn phải thêm chức năng vào API cũ hoặc API hiện có của mình.
- Nó được sử dụng khi bạn phải đơn giản hóa API phức tạp.
- Trộn và trộn mẫu mặt tiền, thường được sử dụng trong lập trình hướng đối tượng.
- Khi bạn phải tổng hợp dữ liệu từ nhiều nơi vào một API tiện lợi.
- Bạn có thể sử dụng GraphQL làm bản tóm tắt trên API hiện có để chỉ định cấu trúc phản hồi dựa trên nhu cầu của người dùng.
Bạn cần học gì trước khi học GraphQl?
Hướng dẫn GraphQL này dựa trên Bày tỏ và NodeJ. Do đó, bạn có thể học GraphQL rất dễ dàng với sự hiểu biết cơ bản về NodeJS.
Các thành phần chính của GraphQL
Bây giờ trong hướng dẫn GraphQL này, hãy cùng tìm hiểu các thành phần chính của GraphQL:
Như được hiển thị trong hình trên, có ba thành phần chính của GraphQL: 1) Truy vấn, 2) Trình phân giải và 3) Lược đồ.
Câu Hỏi
Truy vấn là một yêu cầu API được thực hiện bởi ứng dụng máy khách. Nó hỗ trợ tăng cường và trỏ tới mảng. Truy vấn được sử dụng để đọc hoặc tìm nạp các giá trị.
Các phần của truy vấn:
Sau đây là những phần quan trọng của Query
- Cánh đồng:
Một trường chỉ đơn giản cho biết chúng ta đang yêu cầu máy chủ cung cấp thông tin cụ thể. Sau đây là ví dụ GraphQL về một trường trong truy vấn graphQL.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
Trong ví dụ về GraphQL ở trên, chúng tôi yêu cầu máy chủ cung cấp trường có tên team và các trường con của nó như id và name. Máy chủ GraphQL trả về dữ liệu mà chúng tôi yêu cầu.
- Lập luận
In REST của, chúng ta chỉ có thể truyền một tập hợp các đối số duy nhất dưới dạng các phân đoạn URL và tham số truy vấn. Để có được một cấu hình cụ thể, một lệnh gọi REST thông thường sẽ trông như sau:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
Giải quyết
Trình phân giải cung cấp hướng dẫn để chuyển đổi thao tác GraphQL thành dữ liệu. Chúng giải quyết truy vấn dữ liệu bằng cách xác định các hàm phân giải.
Nó hiển thị cho máy chủ quy trình cũng như vị trí để tìm nạp dữ liệu theo một trường cụ thể. Trình phân giải cũng tách lược đồ cơ sở dữ liệu và lược đồ API. Các thông tin được tách biệt giúp sửa đổi nội dung thu được từ cơ sở dữ liệu.
Schema
Lược đồ GraphQL là trung tâm của việc triển khai GraphQL. Nó mô tả chức năng có sẵn cho các máy khách đang kết nối với nó.
Các tính năng của GraphQL
Dưới đây là các tính năng quan trọng của GraphQL:
- Nó cung cấp ngôn ngữ truy vấn khai báo, không bắt buộc.
- Nó mang tính phân cấp và tập trung vào sản phẩm.
- GraphQL được gõ mạnh. Nó có nghĩa là các truy vấn được thực hiện trong ngữ cảnh của một hệ thống cụ thể.
- Các truy vấn trong GraphQL được mã hóa trong máy khách chứ không phải trong máy chủ.
- Nó có tất cả các tính năng của lớp ứng dụng của mô hình OSI.
Khách hàng GraphQL
Máy khách GraphQL là mã thực hiện các yêu cầu POST tới Máy chủ GraphQL có liên quan. Bạn có thể truy vấn trực tiếp API GraphQL, nhưng cách tiếp cận tốt là tận dụng thư viện máy khách chuyên dụng bằng cách sử dụng Relay.
T JavaThư viện tập lệnh được Facebook phát triển để tạo ứng dụng React với GraphQL. Máy khách GraphQL có thể là CMS như Drupal, ứng dụng một trang, ứng dụng di động, v.v.
Máy chủ GraphQL
Máy chủ GraphQL là phía máy chủ triển khai đặc tả của GraphQL. Nó mô tả dữ liệu của bạn dưới dạng API GraphQL mà chương trình khách hàng của bạn có thể truy vấn cơ sở dữ liệu.
Cổng GraphQL
Gateway là một mẫu vi dịch vụ nơi bạn có thể xây dựng một dịch vụ riêng biệt để tương thích với các dịch vụ phụ trợ khác. Nó cung cấp tài liệu khả thi và cung cấp một cách thuận tiện để thu thập dữ liệu từ nhiều nguồn chỉ với một yêu cầu.
Biến trong GraphQL là gì?
A Biến trong GraphQL được sử dụng để tách các giá trị động khỏi truy vấn máy khách và chuyển truy vấn dưới dạng từ điển duy nhất. Biến trong GraphQL cũng có thể được sử dụng để sử dụng lại truy vấn hoặc các đột biến do máy khách viết bằng các đối số riêng lẻ. Trong graphQL, bạn không thể truyền trực tiếp các đối số động vào chuỗi truy vấn. Lý do là mã phía máy khách cần thao tác chuỗi truy vấn một cách linh hoạt tại thời điểm bạn chạy chương trình.
GraphQL có một cách tốt để phân tích các giá trị động ra khỏi truy vấn. Nó truyền chúng như một từ điển riêng biệt. Các giá trị này được gọi là biến. Bất cứ khi nào chúng ta làm việc với các biến, chúng ta cần thực hiện ba điều sau:
- Thay thế giá trị tĩnh trong truy vấn bằng tên biến.
- Khai báo tên biến là một trong các biến được truy vấn GraphQL chấp nhận.
- Truyền giá trị vào từ điển các biến dành riêng cho việc vận chuyển.
Đây là những gì nó trông giống như tất cả cùng nhau:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } { "episode": "JEDI" } { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
Như bạn có thể thấy trong ví dụ về GraphQL ở trên, chúng tôi chỉ truyền một biến khác ngoài việc cần tạo một truy vấn mới.
Đột biến là gì?
Đột biến là một cách để thay đổi tập dữ liệu trong GraphQL. Nó sửa đổi dữ liệu trong kho dữ liệu và trả về một giá trị. Đột biến giúp bạn chèn, cập nhật hoặc xóa dữ liệu. Nói chung, các đột biến được định nghĩa là một phần lược đồ.
Những điểm cần cân nhắc khi thiết kế đột biến GraphQL
Dưới đây là những điểm quan trọng khi thiết kế GraphQL:
- Đặt tên: Trước hết, bạn phải đặt tên cho động từ đột biến của mình. Sau đó là danh từ hoặc “tân ngữ” nếu có. Sử dụng CamelCase khi đặt tên cho các đột biến.
- Tính cụ thể: Bạn phải tạo ra đột biến cụ thể càng nhiều càng tốt. Đột biến phải thể hiện các hành động ngữ nghĩa được thực hiện bởi người dùng.
- Đối tượng đầu vào: Sử dụng một loại đối tượng đầu vào, duy nhất, bắt buộc, làm đối số để thực hiện đột biến trên máy khách.
- Loại tải trọng duy nhất: Bạn nên sử dụng một loại tải trọng duy nhất cho mỗi đột biến. Bạn cũng có thể thêm đầu ra đột biến dưới dạng trường cho loại tải trọng cụ thể đó.
- Làm tổ: Sử dụng tính năng lồng vào đột biến của bạn ở bất cứ nơi nào có ý nghĩa. Nó cho phép bạn sử dụng đầy đủ API GraphQL.
Sự khác biệt giữa GraphQL và REST
Bảng sau đây cho thấy sự khác biệt quan trọng giữa GraphQL và REST.
GraphQL | REST của |
---|---|
Nó tuân theo kiến trúc hướng tới khách hàng. | Nó tuân theo kiến trúc do máy chủ điều khiển. |
GraphQL có thể được tổ chức theo một lược đồ. | REST có thể được tổ chức theo điểm cuối. |
GraphQL là một cộng đồng đang phát triển. | REST là một cộng đồng rất lớn. |
Tốc độ phát triển trong GraphQL rất nhanh. | Tốc độ phát triển trong REST chậm. |
Quá trình học tập trong GraphQL rất khó khăn. | Quá trình học tập trong REST ở mức vừa phải. |
Danh tính được tách biệt khỏi cách bạn tìm nạp nó. | Điểm cuối bạn gọi trong REST là danh tính của một đối tượng cụ thể. |
Trong GraphQL, máy chủ xác định các tài nguyên có sẵn. | Hình dạng và kích thước của tài nguyên được xác định bởi máy chủ trong REST. |
GraphQL cung cấp tính nhất quán cao trên tất cả các nền tảng. | Thật khó để có được sự nhất quán trên tất cả các nền tảng. |
Nhược điểm của GraphQL
Dưới đây là những nhược điểm của GraphQL:
- Hệ sinh thái trẻ
- Thiếu tài nguyên ở phần phụ trợ.
- Thiếu mẫu thiết kế cho một ứng dụng phức tạp.
- Các vấn đề về hiệu suất với các truy vấn phức tạp.
- Quá mức cần thiết cho các ứng dụng nhỏ
- GraphQL không phụ thuộc vào các phương thức bộ nhớ đệm HTTP cho phép lưu trữ nội dung yêu cầu.
- GraphQL không hiểu tệp. Do đó, tính năng tải tệp lên không được bao gồm trong đó.
- Với GraphQL, hãy chuẩn bị sẵn sàng để có nhiều kiến thức trước khi phát triển như học Ngôn ngữ Định nghĩa Lược đồ.
Các ứng dụng và công cụ nguồn mở được GraphQL sử dụng
Các ứng dụng và công cụ nguồn mở quan trọng được GraphQL sử dụng như sau:
- Gatsby: Gastby là một ứng dụng được hỗ trợ bởi GraphQL, có thể sử dụng dữ liệu được lấy từ nhiều nguồn API GraphQL. Bạn có thể sử dụng nó để phát triển ứng dụng React tĩnh và dựa trên máy khách.
- GraphiQL: Đó là ID tích hợp với trình duyệt và cũng tương tác với API của GraphQL. Một số chức năng mà GraphiQL bao gồm là đột biến, truy vấn dữ liệu và truy vấn tự động hoàn thành.
- Sân chơi GraphQL: Đây là một IDE mạnh mẽ có trình soạn thảo tích hợp sẵn để xử lý các đột biến, xác thực, truy vấn GraphQl, đăng ký, v.v. Nhà phát triển có thể sử dụng IDE này để trực quan hóa cấu trúc của lược đồ.
- Prisma: Prisma là lớp trừu tượng hóa cơ sở dữ liệu giúp biến cơ sở dữ liệu của bạn thành API GraphQL với các thao tác CRUD (Tạo, Đọc, Cập nhật và Xóa).
- Một chút: Đây là công cụ và nền tảng nguồn mở giúp chuyển đổi mã có thể tái sử dụng thành các thành phần. Các nhà phát triển có thể sử dụng chúng để chia sẻ và phát triển các dự án khác nhau.
Tổng kết
- GraphQL là công nghệ phía máy chủ lớp ứng dụng được Facebook phát triển để thực hiện các truy vấn với dữ liệu hiện có.
- Bạn có thể sử dụng GraphQL để tìm nạp dữ liệu chỉ bằng một lệnh gọi API.
- GraphQL giúp bạn cải thiện hiệu suất của ứng dụng di động.
- Các thành phần truy vấn GraphQL quan trọng là: 1) Truy vấn, 2) Trình phân giải, 3) Lược đồ.
- GraphQL được gõ mạnh. Nó có nghĩa là các truy vấn được thực hiện trong ngữ cảnh của một hệ thống cụ thể.
- Máy khách GraphQL là mã thực hiện các yêu cầu POST tới Máy chủ GraphQL có liên quan.
- Máy chủ GraphQL là phía máy chủ triển khai đặc tả của GraphQL.
- Gateway là một mẫu vi dịch vụ nơi bạn có thể xây dựng một dịch vụ riêng biệt để tương thích với các dịch vụ phụ trợ khác.
- GraphQL có một cách hay để phân tích các giá trị động ra khỏi truy vấn.
- Đột biến là một cách để thay đổi tập dữ liệu trong GraphQL.
- Các điểm quan trọng khi thiết kế GraphQL là: 1) Đặt tên, 2) Tính đặc hiệu, 3) Đối tượng đầu vào Loại tải trọng duy nhất và 4) Lồng nhau.
- GraphQL có thể được tổ chức theo lược đồ, trong khi REST có thể được tổ chức theo điểm cuối.
- Nhược điểm của GraphQL là thiếu tài nguyên ở phần phụ trợ.