GraphQL dengan Drupal 8 : Panduan Semua-Anda-Perlu-Untuk-Tahu (dengan contoh!)

Diterbitkan: 2019-12-17

GraphQL berbicara dengan Drupal dalam HTTP dan hasilnya lebih terstruktur daripada sebelumnya!

Hari ini, pengalaman pelanggan yang hebat dimulai dengan konten yang hebat. Konten yang tersedia di mana-mana. Dengan inisiatif API pertama Drupal 8, konten yang dikelola oleh Drupal dapat dengan mudah digunakan oleh sistem lain melalui HTTP. REST (Representational State Transfer) menyediakan standar desain untuk API. Namun, dengan aplikasi klien yang semakin kompleks dan menantang, pengembang membutuhkan solusi yang lebih modern dan efektif.

GraphQL dengan drupal8



GraphQL lahir dari permintaan akan interaksi client-server yang lebih fleksibel dan kuat. Ini adalah bahasa query yang canggih dan mesin eksekusi. Pada tahun 2012 Facebook membuat spesifikasi untuk itu, yang menjelaskan kemampuannya dan persyaratan model data untuk aplikasi tanpa kepala.

Apa itu GraphQL?

GraphQL adalah standar adaptif untuk API dan menyediakan waktu proses untuk memenuhi kueri tersebut. GraphQL memberikan detail informasi yang lengkap dan masuk akal di API Anda. Ini dikembangkan dengan ideologi "Mintalah apa yang Anda butuhkan dan dapatkan dengan tepat". Ini memberdayakan klien untuk mengambil respons tepat yang mereka butuhkan dari API, tidak lebih - tidak kurang.

Keuntungan GraphQL

Beberapa dari banyak keuntungan menggunakan GraphQL untuk Drupal -

  1. Pengembangan frontend lebih cepat

    Tekankan dengan cepat pada aplikasi tanpa menunggu titik akhir backend baru. Tingkatkan pengambilan data dan pemeliharaan kode dengan mendapatkan data dalam bentuk yang Anda butuhkan.
  2. Mintalah apa yang Anda butuhkan dan dapatkan dengan tepat

    Ini memberikan respons yang tepat yang diminta klien. Itu selalu mengembalikan hasil yang dapat diprediksi. Aplikasi yang menggunakan GraphQL juga stabil karena aplikasi yang mengontrol data yang didapatnya, bukan servernya.
  3. Gunakan data Anda yang ada

    GraphQL dapat digunakan dengan infrastruktur yang ada misalnya REST, SOAP atau database yang ada, atau apa pun. Ini memungkinkan Anda untuk menanyakan semua data dalam satu permintaan dan memberi Anda respons yang dapat diprediksi.
  4. Lebih sedikit byte dan pulang pergi

    Menggunakan GraphQL semua data yang diperlukan dapat diambil menggunakan satu kueri. Itu membuat
    aplikasi lebih cepat.
drupal-graphql

GraphQL dengan Drupal 8

REST vs JSON:API vs GraphQL

Jika kita membandingkan ketiganya berdasarkan efisiensi permintaan, JSON:API dan GraphQL sangat baik. Karena dalam satu permintaan JSON:API dan GraphQl dapat melayani semua respons yang diperlukan. Dalam kasus JSON:API, terkadang kita harus menyesuaikan respons, tetapi ketika menyangkut GraphQL, itu hanya melayani apa yang kita butuhkan. REST lebih lambat dibandingkan dengan ini, karena beberapa permintaan diperlukan untuk melayani kebutuhan umum.

Dalam hal kesederhanaan operasional dan implementasi, REST adalah yang termudah, sudah ada cukup lama sekarang. JSON:API juga bekerja di luar kotak dengan CDN dan proxy terbalik. Untuk GraphQL infrastruktur tambahan diperlukan dan perpustakaan klien diperlukan untuk mengimplementasikannya.

Lebih mudah menggunakan cache web di REST dan JSON:API dibandingkan dengan GraphQL. Di GraphQL, hanya ada satu titik akhir (sebagian besar titik akhir HTTP POST) tempat semua kueri dikirim. Karena setiap kueri bisa berbeda, lebih sulit untuk menggunakan jenis caching ini.

Spesifikasi Drupal GraphQL mendukung operasi massal/batch secara otomatis untuk mutasi yang telah Anda terapkan, sedangkan spesifikasi JSON:API tidak. Kemampuan untuk melakukan operasi penulisan batch bisa menjadi penting.

Menginstal GraphQL untuk Drupal 8

Modul Drupal GraphQL mendukung semua spesifikasi GraphQL dan dapat digunakan untuk membangun dan mengekspos skema GraphQL. Rilis alpha terbaru dari modul Drupal 8 dalam versi 8.x-4 menawarkan kemampuan modul Drupal untuk memperluas skema dengan sebuah plugin.

Di sinilah Anda dapat menginstal modul Drupal GraphQL dari - https://www.drupal.org/project/graphql
Anda dapat menginstal menggunakan perintah komposer.

 komposer membutuhkan 'drupal/graphql:^3.0'

Ini akan memberi Anda dua modul GraphQL Core dan GraphQL . Anda harus mengaktifkan kedua modul. Anda dapat mengaktifkannya menggunakan drush misalnya

 drush dan graphql
drush dan graphql_core

Query dengan Drupal GraphQL

Modul Drupal GraphQL menyediakan alat yang disebut GraphiQL . Ini adalah alat yang ampuh dan memiliki UI interaktif dengan fungsi seperti penyelesaian otomatis. Dengan menggunakan alat ini, Anda dapat menjalankan kueri dan mendapatkan output. Arahkan ke – “ /graphql/explorer ” untuk antarmuka.

Anda akan mendapatkan UI yang terlihat seperti ini –

GraphQL-UI

GraphiQL UI

Di panel sisi kiri UI ini Anda dapat menulis kueri dan di sisi kanan, Anda akan melihat hasilnya sebagai output dalam format JSON. Mengklik Documents di sudut kanan atas, akan memberi Anda dokumentasi dari kueri yang tersedia. Bagian Variabel Query pada panel kiri bawah dapat digunakan untuk melewatkan variabel query.

Contoh

1.Meminta Node

quering-node-graphql

Drupal GraphQL - Node Kueri

2. Menanyakan Taksonomi

Drupal GraphQL - Taksonomi Kueri

Drupal GraphQL - Taksonomi Kueri


3. Query Routes

Drupal GraphQL - Query Routes

Drupal GraphQL - Query Routes

4. Fragmen Kueri

Drupal GraphQL - Fragmen Kueri

Drupal GraphQL - Fragmen Kueri

5.Filter

Drupal GraphQL - Filter

Drupal GraphQL - Filter

6. Filter dengan konjungsi

Drupal GraphQL - Filter dengan Konjungsi

Drupal GraphQL - Filter dengan Konjungsi

Operator lain yang tersedia adalah:

  • SETARA
  • TIDAK SAMA
  • LEBIH KECIL DARI
  • KECIL_THAN_OR_SAMA
  • LEBIH BESAR DARI
  • GREATER_THAN_OR_EQUAL
  • DI
  • TIDAK MASUK
  • SUKA
  • TIDAK SUKA
  • DI ANTARA
  • TIDAK DIANTARA
  • IS_NULL
  • IS_NOT_NULL

Konjungsi dapat memiliki dua nilai

  • DAN
  • ATAU

Anda juga dapat menggunakan Grup untuk menulis kueri yang lebih kompleks.

7.Variabel GraphQL

Drupal GraphQL - Variabel

Drupal GraphQL - Variabel

Mutasi

Di GraphQL, mutasi adalah istilah yang digunakan setiap kali Anda ingin menambah, mengubah, atau menghapus data yang disimpan di server. Dalam hal ini, Drupal. Sayangnya, modul tidak menyertakan cara untuk melakukan mutasi umum di luar kotak karena beberapa persyaratan teknis GraphQL.
Contoh kode untuk membuat, menghapus, memperbarui, dan mengunggah file, dapat ditemukan di sini: https://github.com/drupal-graphql/graphql-examples

Contoh mutasi:

Drupal GraphQL - Contoh mutasi

Drupal GraphQL - Contoh mutasi

Drupal GraphQL dengan Twig

Menggunakan Drupal GraphQL dengan Twig dapat meningkatkan kinerja situs web Anda secara signifikan. Begini caranya – Saat Anda memasukkan data ke dalam template Twig, Anda dapat mengambil semua data yang diperlukan menggunakan satu panggilan API. Selain itu, karena klien mengontrol data yang mereka dapatkan dan bukan server, itu membuat proses menjadi lebih cepat.

Untuk menggunakan Drupal GraphQL dengan Twig kita membutuhkan modul GraphQL Twig. Untuk mengunduh dan mengaktifkannya, gunakan perintah berikut:

 komposer membutuhkan 'drupal/graphql_twig:^1.0'
drush dan graphql_twig

Dan kemudian Anda dapat menggunakan kueri GraphQL di situs web Anda, mis

 {#graphql
permintaan {
  admin:userById(id: "1") {
    uid
    nama
  }
  pengguna:konteksPengguna saat ini {
    uid
  }
}
#}

Anda akan mendapatkan data respons dalam variabel GraphQL.