Tương tác với API GraphQL
Tương tác với API GraphQLChuyển đổi ứng dụng của bạn từ WordPress sang framework hoặc CMS PHP khác

Chuyển đổi ứng dụng của bạn từ WordPress sang framework hoặc CMS PHP khác

Schema GraphQL được cung cấp bởi Gato GraphQL chứa các trường để lấy dữ liệu WordPress: bài viết, người dùng, bình luận, thẻ, danh mục, v.v.

Mã trong các PHP resolver lấy dữ liệu WordPress phụ thuộc vào WordPress; mã đó không thể chạy trên ứng dụng không phải WordPress.

Tuy nhiên, Gato GraphQL triển khai từng resolver thông qua 2 gói:

  1. Một gói PHP "vanilla", chứa toàn bộ mã chung
  2. Một gói dành riêng cho WordPress, chứa các lời gọi thực tế đến các phương thức WordPress đáp ứng resolver đó

Ví dụ, trong GraphQL query này:

{
  posts {
    id
    title
  }
}

...logic để lấy các bài viết bao gồm:

  1. Trường Root.posts: Nằm trong gói chung posts
  2. Cách phân giải của nó cho WordPress thông qua phương thức get_posts: Nằm trong gói dành riêng cho WordPress posts-wp.

Tỷ lệ phân chia mã giữa các gói không phải WordPress/WordPress là khoảng 80/20%, có nghĩa là 80% mã có thể tái sử dụng với framework/CMS khác, và chỉ 20% mã cần được triển khai lại.

Hơn nữa, toàn bộ chức năng trong Gato GraphQL được cung cấp thông qua các module, và các module có thể được bật/tắt tùy ý.

Các module schema
Các module schema

Modules là tính năng được triển khai cho mục đích bảo mật: Nếu bạn không cần hiển thị dữ liệu người dùng trong API công khai của mình, thì bạn có thể tắt module Users, và các trường tương ứng (chẳng hạn như Root.users) sẽ không bao giờ được thêm vào schema.

Các module được ánh xạ trực tiếp tới các gói PHP bên dưới. Do đó, khi chạy Gato GraphQL như một ứng dụng độc lập, chúng ta có thể tải có chọn lọc các module/gói mà chúng ta cần, và không tải những module/gói khác.

Ví dụ, nếu ứng dụng của bạn chỉ hiển thị dữ liệu cho bài viết, danh mục và thẻ, thì chỉ cần tải các gói posts-wp, categories-wptags-wp (cùng với các phụ thuộc của chúng).

Sau đó, khi chuyển đổi khỏi WordPress (chẳng hạn sang Laravel hoặc Symfony), chỉ có 3 gói dành riêng cho WordPress đó cần được triển khai lại cho framework/CMS mới, và không có gì khác.