WordPress için API'lar

Gato GraphQL vs WP REST API

Gato GraphQL ile WP REST API karşılaştırması

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

REST ve GraphQL API'ları arasındaki genel farklar, WP REST API ile Gato GraphQL karşılaştırılırken de geçerlidir.

GraphQL ile bir endpoint'e özelleştirilmiş bir GraphQL query çalıştırabilir, hangi verilere ihtiyaç duyduğunuzu belirtebilir ve yalnızca o verileri tek bir istekte alabilirsiniz.

Örneğin, aşağıdaki GraphQL query belirli bir yazının gerekli verilerini, ilişkilerinden (yazar, kategoriler ve etiketler) gelen veriler dahil olmak üzere tek bir istekte alır:

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

REST ile aynı verileri almak için önce yazı verilerini almak üzere bir istek, ardından ilişkilerinin (yazar, kategoriler ve etiketler) her biri için verilerini almak üzere ayrı birer istek göndermeniz gerekebilir.

REST ve GraphQL arasındaki bu mimari farklar başka yerlerde geniş çapta ele alınmıştır, bu nedenle burada tekrarlamayacağız.

Aşağıda, Gato GraphQL + tüm uzantılar ile WP REST API arasında daha ayrıntılı bir karşılaştırma yapalım.

Özet tablo

ÖzellikGato GraphQLWP REST API
Veri AlmaÖzelleştirilmiş GraphQL queries çalıştırarak tek bir istekte belirli verileri alır.İlişkili verileri almak için farklı endpoint'lere birden fazla istek gönderilmesi gerekir (ör. yazı verisi, yazar verisi, kategoriler ve etiketler).
Endpoint'lerPersisted Queries destekler; bunlar, GraphQL dili kullanılarak wp-admin içindeki bir kullanıcı arayüzü üzerinden oluşturulan ve kod dağıtımı gerektirmeyen önceden tanımlanmış verili endpoint'lerdir.Verileri REST endpoint'leri aracılığıyla sunar; her birinin kendi URL'si ve önceden tanımlanmış verileri vardır, PHP kodu ile oluşturulur ve bir tema ya da eklenti içinde dağıtılır.
Erişim DenetimiKurallara dayalı alan düzeyinde erişim denetimiyle esneklik sağlar (ör. kullanıcı rolleri, yetenekler, IP aralığı).context parametresine göre verileri kısıtlar (ör. kimliği doğrulanmamış kullanıcılar için view, izinli kimliği doğrulanmış kullanıcılar için edit).
Toplu İşlemlerMultiple Query Execution destekler; tek bir GraphQL belgesi, @export direktifi aracılığıyla durum paylaşabilen birden fazla işlem çalıştırabilir; bu özellik toplu isteklerin geliştirilmiş halidir.Toplu isteklere izin verir; birden fazla istek tek bir HTTP isteği içinde dahili olarak karşılanır.
Site YönetimiKullanıcı arayüzleri aracılığıyla tek bir GraphQL belgesi içinde veri alabilir, değiştirebilir ve geri kaydedebilir; WordPress sitelerinin otomasyonunu ve yönetimini sağlar. Çoğaltma, otomasyon, yedekleme, arama/değiştirme, webhook ve çeviri gibi birden fazla eklentinin görevlerini yerine getirebilir. Hem bir API hem de çok daha fazlasıdır.Öncelikle WordPress verilerine erişmek ve bunları değiştirmek için bir API'dır.
GenellikWordPress sitelerini yönetmek için genel amaçlı bir araçtır; GraphQL queries aracılığıyla veri mutation'ı ve üçüncü taraf hizmetlerle entegrasyon yapabilir.Bir API sunmaya odaklanır; benzer işlevlere ulaşmak için ek eklentiler veya özel kod gerektirir.

Temel noktaların özeti:

  • Veri Alma: Gato GraphQL özelleştirilmiş queries kullanır, WP REST API ise birden fazla endpoint isteği kullanır.
  • Endpoint'ler: Gato GraphQL, kullanıcı arayüzü üzerinden oluşturulan persisted queries kullanır; WP REST API ise PHP kodlu REST endpoint'leri kullanır.
  • Erişim Denetimi: Gato GraphQL alan düzeyinde denetim sunarken WP REST API context parametresini kullanır.
  • Toplu İşlemler: Gato GraphQL Multiple Query Execution kullanır, WP REST API ise toplu istekler kullanır.
  • Site Yönetimi: Gato GraphQL kapsamlı bir araçtır, WP REST API ise öncelikle bir API'dır.

Önceden tanımlanmış verilere erişim

WP REST API ile verileri REST endpoint'leri aracılığıyla sunarsınız. Her endpoint'in kendi URL'si vardır ve verileri önceden tanımlanmıştır (yazılar veya kullanıcılar gibi ilgili kaynaklar için).

REST endpoint'lerine benzer şekilde, Gato GraphQL da önceden tanımlanmış verili endpoint'ler olan Persisted Queries destekler. GET ile bir persisted query talep etmek, depolanan GraphQL query'yi çalıştırır ve beklenen JSON yanıtını üretir:

Tarayıcıda bir persisted query çalıştırma
Tarayıcıda bir persisted query çalıştırma

Aralarındaki fark şudur: REST API endpoint'leri PHP kodu ile oluşturulur ve bir tema ya da eklenti içinde dağıtılmak zorundadır; oysa Gato GraphQL persisted queries, GraphQL dili kullanılarak oluşturulur ve herhangi bir kod dağıtımına gerek kalmadan wp-admin içindeki bir kullanıcı arayüzü (WordPress editörü tarafından desteklenen) aracılığıyla yayımlanır.

Persisted query düzenleyicisi
Persisted query düzenleyicisi

Aynı önbellekleme mekanizmaları hem REST endpoint'lerine hem de GraphQL persisted queries'e uygulanabilir. Persisted query kendi endpoint'i üzerinden erişildiğinden, yanıtı standart HTTP önbellekleme kullanılarak önbelleğe alınabilir (PRO).

Erişim denetimi

WP REST API'de veri kısıtlaması context parametresine bağlıdır. ?context=view geçirmek kimliği doğrulanmamış kullanıcılar için veri üretir; ?context=edit ise kimliği doğrulanmış kullanıcılar için (doğru izinlerle) content.raw alanı gibi ek veriler içerir.

Gato GraphQL çok daha fazla esneklik sunar; her alanın Erişim Denetimi kurallarına göre erişilebilir olup olmadığı ayrı ayrı belirlenir. Yalnızca oturum açmış kullanıcıların, belirli bir rol ya da yeteneğe sahip kullanıcıların veya belirli bir IP aralığından ziyaretçilerin belirli bir alana erişebileceğini doğrulayabilirsiniz (PRO).

Erişim Denetim Listesi düzenleyicisi
Erişim Denetim Listesi düzenleyicisi

Toplu işlemler

WP REST API, toplu istekler çalıştırmaya izin verir; bu isteklerde birden fazla istek tek bir HTTP isteği içinde dahili olarak karşılanır.

Gato GraphQL ise Multiple Query Execution sunar; bu sayede tek bir GraphQL belgesi birden fazla işlem çalıştırabilir.

Multiple Query Execution, toplu isteklere göre bir gelişmedir; çünkü işlemler @export direktifi aracılığıyla birbirleriyle durum paylaşabilir.

Örneğin, bir yazıyı çoğaltmak için bir query işlemi yazı verilerini alır ve bu verileri yeni bir yazı oluşturan bir mutation işlemine aktarır:

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

WordPress sitesini yönetme

Gato GraphQL, veritabanından veri almamıza, gerektiği şekilde değiştirmemize ve geri kaydetmemize olanak tanır; bunların tümü tek bir GraphQL belgesi içinde gerçekleşir.

Bu, GraphQL queries oluşturup yayımlamak, endpoint'leri gerektiği şekilde yapılandırmak ve bir olay gerçekleştiğinde query çalıştırılmasını otomatikleştirmek için kullanıcı arayüzleri aracılığıyla sağlanır.

Tüm bunlar, Gato GraphQL'in WordPress sitelerimizi yönetmek için genel amaçlı bir araç olduğu anlamına gelir; bu araç, verilerin (ister WordPress sitesinden ister üçüncü taraf hizmetler tarafından sağlansın) mutation'a tabi tutulması gereken kullanım durumlarını karşılar; zira bu, bir GraphQL query çalıştırılarak gerçekleştirilebilir.

Gato GraphQL'in birden fazla eklentinin işlevselliğini nasıl sunabildiğine dikkat edin:

WP REST API yalnızca bir API'dır.

Gato GraphQL de bir API'dır, ancak çok daha fazlası.

Bültenimize abone olun

Gato GraphQL'deki tüm güncellemelerden haberdar olun.