API untuk WordPress

Gato GraphQL vs WP REST API

Perbandingan antara Gato GraphQL dan WP REST API

Gato GraphQL vs WP REST API
plus image
Gato GraphQL vs WP REST API

Perbedaan antara API REST dan GraphQL umumnya berlaku saat membandingkan WP REST API dengan Gato GraphQL.

Dengan GraphQL, Anda dapat menjalankan query GraphQL yang disesuaikan terhadap sebuah endpoint, menentukan data spesifik yang Anda butuhkan, dan mengambil hanya data tersebut dalam satu permintaan.

Misalnya, query GraphQL berikut akan mengambil data yang diperlukan untuk sebuah postingan tertentu, termasuk data dari relasinya (penulis, kategori, dan tag), semuanya dalam satu permintaan:

query {
  post(by: { id: 1 }) {
    title
    content
    url
    date
    author {
      id
      name
    }
    categories {
      id
      name
    }
    tags {
      id
      name
    }
  }
}

Untuk mengambil data yang sama dengan REST, Anda mungkin perlu menjalankan permintaan pertama untuk mengambil data postingan, lalu permintaan tambahan untuk setiap relasinya (penulis, kategori, dan tag) guna mengambil datanya.

Perbedaan arsitektur antara REST dan GraphQL ini telah dibahas secara luas di tempat lain, sehingga mulai sekarang kami tidak akan mengulanginya di sini.

Di bawah ini, mari kita lakukan perbandingan yang lebih spesifik antara Gato GraphQL + semua ekstensi, dan WP REST API.

Tabel ringkasan

FiturGato GraphQLWP REST API
Pengambilan DataMenjalankan query GraphQL yang disesuaikan terhadap sebuah endpoint, mengambil data spesifik dalam satu permintaan.Memerlukan beberapa permintaan ke endpoint yang berbeda untuk mengambil data terkait (mis., data postingan, data penulis, kategori, dan tag).
EndpointsMendukung Persisted Queries, yaitu endpoint dengan data yang telah ditentukan sebelumnya, dibuat menggunakan bahasa GraphQL melalui antarmuka pengguna di dalam wp-admin, tanpa perlu men-deploy kode.Mengekspos data melalui endpoint REST, masing-masing dengan URL-nya sendiri dan data yang telah ditentukan sebelumnya, dibuat melalui kode PHP dan di-deploy dalam sebuah tema atau plugin.
Kontrol AksesMemberikan fleksibilitas dengan kontrol akses di tingkat field berdasarkan aturan (mis., peran pengguna, kemampuan, rentang IP).Membatasi data berdasarkan parameter context (mis., view untuk pengguna yang tidak terautentikasi, edit untuk pengguna terautentikasi dengan izin yang sesuai).
Operasi MassalMendukung Multiple Query Execution, di mana satu dokumen GraphQL dapat menjalankan beberapa operasi yang dapat berbagi state melalui direktif @export, meningkatkan batch requests.Mengizinkan batch requests, di mana beberapa permintaan diselesaikan secara internal dalam satu permintaan HTTP.
Manajemen SitusDapat mengambil data, memodifikasinya, dan menyimpannya kembali dalam satu dokumen GraphQL melalui antarmuka pengguna, memungkinkan otomatisasi dan manajemen situs WordPress. Dapat menjalankan tugas dari beberapa plugin seperti menduplikasi, mengotomatisasi, mencadangkan, mencari/mengganti, webhooks, dan menerjemahkan. Merupakan API dan lebih dari itu.Terutama merupakan API untuk mengakses dan memanipulasi data WordPress.
GeneralitasAlat generik untuk mengelola situs WordPress, mampu melakukan mutasi data dan integrasi dengan layanan pihak ketiga melalui query GraphQL.Berfokus pada penyediaan API; memerlukan plugin tambahan atau kode khusus untuk mencapai fungsionalitas serupa.

Ringkasan poin-poin utama:

  • Pengambilan Data: Gato GraphQL menggunakan query yang disesuaikan, sementara WP REST API menggunakan beberapa permintaan endpoint.
  • Endpoints: Gato GraphQL menggunakan persisted queries yang dibuat melalui UI, sementara WP REST API menggunakan endpoint REST yang dikodekan dalam PHP.
  • Kontrol Akses: Gato GraphQL menawarkan kontrol di tingkat field, sementara WP REST API menggunakan parameter context.
  • Operasi Massal: Gato GraphQL menggunakan Multiple Query Execution, dan WP REST API menggunakan batch requests.
  • Manajemen Situs: Gato GraphQL adalah alat yang komprehensif, dan WP REST API terutama merupakan API.

Mengakses data yang telah ditentukan

Dengan WP REST API, Anda mengekspos data melalui endpoint REST. Setiap endpoint memiliki URL-nya sendiri, dan datanya telah ditentukan sebelumnya (untuk sumber daya yang bersangkutan, seperti postingan atau pengguna).

Mirip dengan endpoint REST, Gato GraphQL mendukung Persisted Queries, yang juga merupakan endpoint dengan data yang telah ditentukan sebelumnya. Meminta sebuah persisted query melalui GET akan menjalankan query GraphQL yang tersimpan, dan menghasilkan respons JSON yang diharapkan:

Menjalankan persisted query di browser
Menjalankan persisted query di browser

Perbedaannya adalah bahwa sementara endpoint REST API dibuat melalui kode PHP dan harus di-deploy dalam sebuah tema atau plugin, persisted queries Gato GraphQL dibuat menggunakan bahasa GraphQL, dan dipublikasikan melalui antarmuka pengguna (didukung oleh editor WordPress) di dalam wp-admin, tanpa perlu men-deploy kode apa pun.

Editor persisted query
Editor persisted query

Mekanisme caching yang sama dapat diterapkan pada endpoint REST dan persisted queries GraphQL. Karena persisted query diakses melalui endpoint-nya sendiri, responsnya dapat di-cache menggunakan HTTP caching standar (PRO).

Kontrol akses

Pembatasan data di WP REST API bergantung pada parameter context. Melewatkan ?context=view menghasilkan data untuk pengguna yang tidak terautentikasi, dan ?context=edit menyertakan data tambahan untuk pengguna terautentikasi (dengan izin yang tepat), seperti field content.raw pada postingan.

Gato GraphQL memberikan fleksibilitas yang jauh lebih besar, dengan setiap field tunggal dapat diakses atau tidak berdasarkan aturan Access Control. Anda dapat memvalidasi bahwa hanya pengguna yang sudah login, atau pengguna dengan peran atau kemampuan tertentu, atau pengunjung dari rentang IP tertentu, yang dapat mengakses field tertentu (PRO).

Editor Access Control List
Editor Access Control List

Operasi massal

WP REST API memungkinkan untuk menjalankan batch requests, di mana beberapa permintaan diselesaikan secara internal dalam satu permintaan HTTP.

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

Multiple Query Execution merupakan peningkatan atas batch requests, karena operasi-operasi tersebut dapat berbagi state satu sama lain melalui direktif @export.

Misalnya, untuk menduplikasi sebuah postingan, kita memiliki operasi query yang mengambil data postingan, dan meneruskan data tersebut ke operasi mutation yang membuat postingan baru dengan data itu:

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
  }
}

Mengelola situs WordPress

Gato GraphQL memungkinkan kita untuk mengambil data dari database, memodifikasinya sesuai kebutuhan, dan menyimpannya kembali, semuanya dalam satu dokumen GraphQL.

Hal ini dicapai melalui antarmuka pengguna, untuk menyusun dan mempublikasikan query GraphQL, mengonfigurasi endpoint sesuai kebutuhan, dan mengotomatisasi eksekusi query saat suatu peristiwa terjadi.

Semua ini berarti bahwa Gato GraphQL adalah alat generik untuk mengelola situs WordPress kita, memenuhi kasus penggunaan di mana data (baik dari situs WordPress, maupun yang disediakan oleh layanan pihak ketiga) harus dimutasi, karena hal ini dapat dicapai dengan menjalankan query GraphQL tertentu.

Perhatikan bagaimana Gato GraphQL dapat menghadirkan fungsionalitas dari beberapa plugin:

WP REST API hanyalah itu, sebuah API.

Gato GraphQL juga merupakan API, tetapi juga jauh lebih dari itu.

Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.