Bắt đầu
Bắt đầuGiới thiệu về GraphQL và Gato GraphQL

Giới thiệu về GraphQL và Gato GraphQL

Chào mừng bạn đến với các hướng dẫn của Gato GraphQL. Tại đây bạn sẽ tìm thấy nhiều thông tin về cài đặt, cấu hình và sử dụng plugin Gato GraphQL trên trang WordPress của bạn.

GraphQL là gì

GraphQL là một đặc tả API, cho phép các client (như trang web trên trình duyệt hoặc ứng dụng di động) chỉ định chính xác dữ liệu họ cần, và server triển khai API sẽ truy xuất đúng dữ liệu đó.

Một GraphQL query trông như thế này:

query {
  posts {
    id
    title
    content
    author {
      id
      name
    }
  }
}

Phản hồi từ server ở định dạng JSON, chứa dữ liệu có cùng cấu trúc với query. Nó trông như thế này:

{
  "data": {
    "posts": [
      {
        "id": 1,
        "title": "Hello world",
        "content": "<p>How are you doing?</p>",
        "author": {
          "id": 1,
          "name": "Leo"
        }
      },
      {
        "id": 2,
        "title": "Scheduled post",
        "content": "<p>This post is scheduled to be published in the future.</p>",
        "author": {
          "id": 2,
          "name": "Markus"
        }
      },
      {
        "id": 3,
        "title": "Lorem ipsum",
        "content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
        "author": {
          "id": 3,
          "name": "Socrates"
        }
      }
    ]
  }
}

Các server GraphQL cũng có thể "biến đổi" (tức là tạo và cập nhật) dữ liệu. Trong trường hợp này, từ khóa thao tác query phải được thay thế bằng mutation:

mutation {
  createPost(input: {
    title: "New post",
    contentAs: { html: "Lorem ipsum dolor sit amet" }
  }) {
    id
    status
  }
}

Hãy xem trang GraphQL chính thức tại graphql.org.

Gato GraphQL là gì

Gato GraphQL là một plugin cho WordPress, chuyển đổi trang web thành một server GraphQL, cho phép bạn lấy và chỉnh sửa dữ liệu từ trang WordPress bằng ngôn ngữ GraphQL.

Gato GraphQL hướng tới:

Dễ sử dụng

Triết lý của WordPress là bất kỳ ai, bất kể có kỹ năng kỹ thuật hay không, đều phải có thể sử dụng phần mềm. Plugin này cố gắng đáp ứng triết lý đó bằng cách làm cho việc tạo một API và tương tác với nó trở nên dễ dàng nhất có thể.

Ví dụ, Gato GraphQL cho phép xuất bản các persisted queries (là các endpoint hiển thị dữ liệu được xác định trước, tương tự như các REST endpoint) bằng giao diện người dùng do trình soạn thảo WordPress cung cấp; giống như viết một bài đăng, nó có thể tiếp cận với tất cả mọi người.

Nhanh

Giải quyết một GraphQL query thông thường yêu cầu duyệt qua một đồ thị chứa dữ liệu của tất cả các thực thể được truy vấn. Đồ thị càng nhiều nút và càng sâu, quá trình này sẽ càng chậm hơn (thậm chí chậm theo cấp số nhân).

Gato GraphQL áp dụng cách tiếp cận khác: sử dụng cấu trúc mô hình thành phần để giải quyết GraphQL query (thay vì đồ thị), liên quan đến một quá trình tăng trưởng tuyến tính theo độ sâu của query (không phải cấp số nhân).

Ngoài ra, chỉ các phần tử schema được yêu cầu trong GraphQL query mới được biên dịch, xác thực và thực thi, chứ không phải toàn bộ GraphQL schema. Do đó, dù trang WordPress của bạn có 3 hay 30 Custom Post Types được cài đặt, thời gian giải quyết query vẫn sẽ như nhau.

Mạnh mẽ

Các API đóng vai trò là cổng chính để client tương tác với server; điều quan trọng là một API không bị giới hạn ở bất kỳ khía cạnh nào, để có thể đáp ứng mọi yêu cầu.

Plugin này cho phép sửa đổi kết quả của việc thực thi một query, thông qua các chức năng tùy chỉnh, các API bên ngoài và các dịch vụ dựa trên đám mây. Dữ liệu được truy vấn có thể được duyệt và xử lý theo nhu cầu, và đầu ra của query cũng có thể được thay đổi theo bất kỳ cách nào mong muốn, vì vậy hầu như không có gì là không thể làm được.

Bảo mật

Một API GraphQL có thể dễ dàng bị quản lý sai, phơi bày quyền truy cập vào tất cả dữ liệu trong trang WordPress cho mọi người, kể cả các tác nhân độc hại; server GraphQL cần cung cấp các biện pháp bảo mật phù hợp, để đảm bảo rằng chỉ những người dùng được chỉ định mới có thể truy cập dữ liệu.

Plugin này rất coi trọng bảo mật và đã triển khai nhiều biện pháp bảo mật ngay trong lõi. Endpoint đơn có thể bị tắt; dữ liệu có thể được hiển thị thông qua các persisted queries; việc cấp quyền truy cập dữ liệu được thực hiện thông qua các danh sách kiểm soát truy cập có thể cấu hình (dựa trên việc người dùng có đăng nhập hay không, có một vai trò hoặc quyền nhất định, hoặc một quy tắc tùy chỉnh); và API có thể được định nghĩa là công khai hoặc riêng tư.

Hướng tới tương lai

GraphQL là một tiêu chuẩn không ngừng phát triển, và cộng đồng liên tục đề xuất các ý tưởng để cung cấp các chức năng mới, được thêm vào đặc tả trong tương lai.

Plugin này không thích chờ đợi; nó đã bao gồm nhiều chức năng mới được đề xuất (như đặt tên namespace cho schema, thực thi nhiều queries cùng lúc và nhiều chức năng khác) dưới dạng các tính năng opt-in, vì vậy chúng phải được quản trị viên bật một cách rõ ràng.