Server GraphQL untuk WordPress

Gato GraphQL vs WPGraphQL

Perbandingan antara Gato GraphQL dan WPGraphQL

Gato GraphQL vs WPGraphQL
plus image
Gato GraphQL vs WPGraphQL

Jika Anda hanya perlu membangun situs WordPress headless dan men-deploy-nya sebagai statis, dan saat ini menggunakan WPGraphQL, beralih ke Gato GraphQL tidak akan membuat perbedaan apa pun.

Selain itu, beralih ke Gato GraphQL memberikan banyak keuntungan. Berikut adalah manfaat yang disediakan oleh Gato GraphQL + semua ekstensi, yang tidak dimiliki WPGraphQL.

Tabel ringkasan

FiturGato GraphQLWPGraphQL
Masalah N+1 QueryBukan masalah karena desain arsitekturBisa menjadi masalah jika tidak ditangani; developer harus waspada
Keamanan: Nonaktifkan EndpointDapat sepenuhnya menonaktifkan single endpoint dengan persisted queries (PRO)Tidak tersedia
Kontrol AksesValidasi per field, dengan roles/capabilities/IP, melalui UI (PRO)Tidak per field, kurang granular
Kontrol Cachemax-age dihitung otomatis untuk queries (PRO)Tidak ada kontrol cache otomatis
Endpoint KustomBeberapa endpoint yang dilindungi kata sandi/dapat dikustomisasi; hierarki endpoint didukung (PRO)Single endpoint, kustomisasi terbatas
Pembaruan Massal & Cari/GantiHapus massal, beri tag, ganti (dengan regex), melalui GraphQL (PRO)Tidak tersedia
Fitur GraphQL Kustom/EksperimentalNested mutations, schema namespacing, oneOf input objectSebagian besar spesifikasi GraphQL standar
Multiple Query Execution (Composability)Beberapa queries dalam satu dokumen, berbagi status dengan @exportBatch queries (beberapa per request), tetapi tidak dapat berbagi status
Endpoint Internal/PrivatEndpoint privat untuk backend/hanya PHP, tidak terekspos ke pengguna (PRO)Tidak tersedia
Mutasi Data yang KayaAmbil, modifikasi, dan simpan data dalam satu dokumen (PRO)Tidak didukung
Sinkronisasi & Distribusi KontenImpor/ekspor melalui GraphQL, RSS, CSV, REST API (PRO)Tidak tersedia
Integrasi Layanan WebPanggilan API keluar/masuk dan webhook (PRO)Tidak didukung
Otomasi (Hooks/Workflows)GraphQL sebagai otomasi workflow (PRO/editor UI)Tidak tersedia
Kemudahan Penggunaan (Integrasi UI)Fitur UI ekstensif untuk membangun/mengelola GraphQL queriesUI admin yang lebih dasar
Batching/ComposabilityKomponen fields/directives, logika resolver yang dapat digunakan kembali (PRO)Tidak didukung
Multiple Query ExecutionDidukung, dengan status bersama dan dependensiDidukung, tanpa berbagi status
Penggunaan Headless/Statis StandarKeduanya sama-sama mampuKeduanya sama-sama mampu

Label:

  • (PRO): Menunjukkan fitur memerlukan versi/ekstensi berbayar/pro untuk Gato GraphQL.

Ringkasan poin utama:

  • Gato GraphQL menawarkan fitur tambahan yang signifikan untuk pengembangan lanjutan, otomasi, dan keamanan
  • Kedua plugin setara untuk instalasi WordPress statis/headless dasar
  • Fitur lanjutan di Gato GraphQL berfokus pada:
    • Kontrol yang terperinci
    • Otomasi workflow
    • Integrasi yang kaya
    • Fitur GraphQL eksperimental modern

Kemudahan pengembangan

Developer tidak perlu khawatir tentang masalah query "n+1": Karena desain arsitektur server GraphQL, hal itu tidak akan terjadi.

Keamanan

Saat menggunakan persisted queries untuk mengekspos data yang telah ditentukan, Anda dapat sepenuhnya menonaktifkan single endpoint GraphQL, sehingga tidak dapat diakses bahkan oleh pengguna yang terautentikasi.

Editor persisted query
Editor persisted query

Kontrol akses

Anda dapat memvalidasi bahwa hanya pengguna yang sudah login, atau pengguna dengan role atau capability tertentu, atau pengunjung dari rentang IP tertentu, yang dapat mengakses data, per field (PRO).

Editor Access Control List
Editor Access Control List

Kontrol cache

Saat melakukan cache respons GraphQL menggunakan HTTP caching standar, header max-age dihitung secara otomatis, dari semua field yang ada dalam GraphQL query (PRO).

Editor Cache Control List

Kustomisasi dan manajemen endpoint

Anda dapat menyediakan beberapa custom endpoint, masing-masing dikustomisasi untuk pelanggan atau aplikasi tertentu, melindunginya dengan kata sandi.

Dan Anda dapat menambahkan kategori kustom ke dalamnya, dan memberikan hierarki pada mereka (seperti /graphql/customers/some-customer dan /graphql/customers/another-customer).

Custom Endpoint yang dilindungi kata sandi
Custom Endpoint yang dilindungi kata sandi

Pembaruan massal

Anda dapat menjalankan pembaruan secara massal. Misalnya, Anda dapat menghapus semua komentar di situs, atau menetapkan tag atau kategori ke semua postingan Anda.

Dan Anda dapat mencari dan mengganti string di ratusan postingan, misalnya untuk mengganti domain lama dengan domain baru, dan bahkan menggunakan regex (PRO).

Fitur GraphQL kustom

Anda akan mendapatkan akses ke fitur GraphQL baru yang diusulkan untuk spesifikasi tetapi belum dirilis, termasuk nested mutations, schema namespacing dan 'oneOf' Input Object.

Schema interaktif dengan namespace
Schema interaktif dengan namespace

Multiple Query Execution

WPGraphQL memungkinkan untuk mengeksekusi queries secara batch, di mana beberapa GraphQL queries diselesaikan dalam satu HTTP request.

Gato GraphQL menyediakan Multiple Query Execution, di mana satu dokumen GraphQL dapat mengeksekusi beberapa operasi.

Multiple Query Execution adalah peningkatan dari query batching, karena operasi dapat berbagi status satu sama lain melalui direktif @export.

Misalnya, untuk menduplikasi postingan, kita memiliki operasi query yang mengambil data postingan, dan meneruskan data ini ke operasi mutation yang membuat postingan baru dengannya:

query GetPostAndExportData($postId: ID!)
{
  post(by: { id: $postId }, status: any) {
    author {
      id @export(as: "authorID")
    }
    categories {
      id @export(as: "categoryIDs", type: LIST)
    }
    rawContent @export(as: "rawContent")
    rawExcerpt @export(as: "excerpt")
    featuredImage {
      id @export(as: "featuredImageID")
    }
    tags {
      id @export(as: "tagIDs", type: LIST)
    }
    rawTitle @export(as: "title")
  }
}
 
mutation DuplicatePost
  @depends(on: "GetPostAndExportData")
{
  createPost(input: {
    status: draft,
    authorBy: {
      id: $authorID
    },
    categoriesBy: {
      ids: $categoryIDs
    },
    contentAs: {
      html: $rawContent
    },
    excerpt: $excerpt
    featuredImageBy: {
      id: $featuredImageID
    },
    tagsBy: {
      ids: $tagIDs
    },
    title: $title
  }) {
    postID
  }
}

Composability

Anda akan memiliki kemampuan untuk mengkomposisi fields, di mana nilai sebuah field dapat diberikan sebagai input ke field lain dalam query yang sama, memungkinkan sekumpulan field resolver dasar untuk mencakup jumlah use case yang tak terbatas (PRO).

Misalnya, alih-alih membuat field Post.hasExcerpt, kita dapat menerapkan field _notEmpty pada Post.excerpt untuk menghasilkan nilai yang sama:

query {
  post(by: { id: 1 }) {
    excerpt 
    hasExcerpt: _notEmpty(value: $__excerpt)
  }
}

Demikian pula, Anda dapat mengkomposisi directives, sehingga sebuah directive dapat diterapkan pada properti dalam dari nilai field.

Misalnya, query berikut menerjemahkan nama-nama kategori postingan ke bahasa lain:

query {
  post(by: { id: 1 }) {
    title
    categoryNames
    frenchCategoryNames: categoryNames
      @underEachArrayItem
        @strTranslate(
          from: "en",
          to: "fr"
        )
  }
}

Ketersediaan server GraphQL

Anda dapat mengekspos endpoint privat untuk mendukung blok Gutenberg Anda. Dan Anda dapat mengakses server GraphQL privat, untuk mengambil data bagi aplikasi Anda menggunakan kode PHP, tanpa mengekspos endpoint publik apa pun (PRO).

Fleksibilitas dalam mutasi data

Anda dapat menggunakan GraphQL untuk mengambil, memodifikasi, dan akhirnya menyimpan kembali konten di situs Anda, semua dalam satu dokumen GraphQL (PRO).

Misalnya, Anda dapat mengambil semua blok Gutenberg dalam sebuah postingan, mengekstrak propertinya, menerjemahkan string tersebut melalui Google Translate API, memasukkan string tersebut kembali ke dalam blok, dan menyimpan postingan kembali.

Sinkronisasi dan distribusi konten

Anda dapat menggunakan GraphQL untuk mengimpor postingan dari situs WordPress lain, dari RSS feed, dari CSV, atau dari REST atau GraphQL API mana pun (PRO).

Anda dapat mengekspor konten ke situs WordPress lain, dan menyimpannya sebagai JSON dan CSV (PRO).

Interaksi layanan web

Anda dapat memanggil API layanan eksternal mana pun melalui HTTP client (PRO). Misalnya, Anda dapat mendaftarkan pengguna WordPress Anda ke daftar email Mailchimp.

Dan Anda dapat menerima dan memproses data masuk dari layanan mana pun melalui webhook khusus (PRO). Misalnya, Anda dapat menangkap email newsletter yang terdaftar di situs sandbox InstaWP dan mengirimkannya secara otomatis ke Mailchimp.

Otomasi

Anda dapat menggunakan GraphQL untuk mengotomasi tugas dan workflow konten (PRO).

Misalnya, ketika sebuah postingan baru dibuat (event melalui hook draft_post) Anda dapat mengeksekusi persisted query yang memeriksa apakah postingan tidak memiliki thumbnail dan, dalam kasus itu, menghasilkan gambar dengan memanggil Stable Diffusion API, mengompresnya melalui TinyPng, dan akhirnya memasukkan gambar sebagai featured image postingan.

Editor Aturan Otomasi
Editor Aturan Otomasi

Kemudahan penggunaan

Semua use case tambahan ini dapat dicapai langsung di dalam wp-admin, dengan menyediakan GraphQL query melalui antarmuka pengguna, tanpa harus men-deploy kode PHP apa pun.

Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.