Sự khác biệt giữa query và mutation trong GraphQL

Hiểu được sự khác biệt giữa query và mutation trong GraphQL, bạn sẽ biết cách dùng chúng chính xác. Dưới đây là sự khác biệt chính giữa query và mutation trong GraphQL.

Sự khác biệt chính giữa truy vấn và đột biến trong GraphQL

GraphQL là một ngôn ngữ truy vấn mạnh mẽ, cho phép các khách hàng chỉ yêu cầu dữ liệu họ cần từ server. Nó giúp bạn tăng tốc độ truy vấn bởi có thể tùy chỉnh các query để chỉ tìm nạp dữ liệu nhất định.

GraphQL có 2 kiểu hoạt động: query - truy vấn và mutation - đột biến. Dù có nhiều điểm tương đồng, chúng lại phục vụ cho các mục đích khác nhau.

Sự khác biệt giữa query và mutation trong GraphQL

Query và mutation giống nhau ở chỗ bạn dùng chúng để gửi yêu cầu tới GraphQL API. Tuy nhiên, chúng khác về mặt cú pháp, chế độ thực thi và cách sử dụng.

Cú pháp của query và mutation trong GraphQL

Cú pháp cơ bản của query GraphQL như sau:

query getProduct($id: ID!) {
  product(id: $id) {
    name
    price
  }
}

Giải mã chi tiết code:

  • query là từ khóa xác định yêu cầu dưới dạng truy vấn.
  • getProduct là tên hoạt động.
  • $id là biến
  • ID! Là kiểu biến

Nếu không cần các biến, loại bỏ chúng và xác định query như sau:

query getProducts {
  products {
    name
    price
  }
}

Trong một số tình huống, bạn có thể bỏ qua từ khóa query và name, viết một truy vấn GraphQL như sau:

products {
  name
  price
}

Dù mẫu code trên hoạt động, dùng từ khóa query vẫn dễ đọc hơn.

Cú pháp của mutation giống query ngoại trừ việc dùng từ khóa mutation.

mutation AddNewProduct ($name: String!, $price: Number!) { 
  addProduct(name: $name, price: $price) {
    name
    price
  }
}

Các chế độ thực thi khác nhau

Điểm khác biệt khác giữa một query và mutation là các truy vấn chạy song song, còn mutation chạy đồng bộ. Khi chạy hai mutation, chúng sẽ lần lượt chạy theo thứ tự.

Cách dùng đối lập giữa query và mutation

Bạn chỉ nên dùng query cho các hoạt động READ. Ví dụ, dùng một query khi tìm nạp sản phầm từ một endpoint API.

Dùng mutation cho các tác vụ CREATE, UPDATE,DELETE. Chúng chủ yếu là những hoạt động làm thay đổi dữ liệu lưu trong database. Ví dụ, dùng một mutation khi cập nhật tên khách hàng qua endpoint đơn hàng.

Trên đây là sự khác biệt cơ bản giữa query và mutation trong GraphQL. Hi vọng bài viết hữu ích với các bạn.

Thứ Sáu, 17/02/2023 10:04
51 👨 585
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖
    Chia sẻ
    Chia sẻ FacebookChia sẻ Twitter
    Đóng