0Pricing
React Academy · Pelajaran

Dasar-Dasar GraphQL untuk Pengembang React

Pahami query, mutasi, subscription, dan skema GraphQL dari sudut pandang pengembang frontend.

Dasar-Dasar GraphQL untuk Pengembang React adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

GraphQL dibandingkan dengan REST

REST menyediakan titik akhir dengan bentuk tetap: GET /users/:id mengembalikan seluruh objek pengguna, terlepas dari data yang dibutuhkan klien. GraphQL memungkinkan klien menentukan dengan tepat bidang yang diinginkan, sehingga menghilangkan pengambilan data berlebihan (terlalu banyak data) dan pengambilan data yang kurang (data tidak cukup sehingga memerlukan beberapa permintaan).

Satu kueri GraphQL dapat mengambil pengguna, postingannya, dan penulis setiap postingan dalam satu perjalanan pulang-pergi.

Skema GraphQL

Setiap API GraphQL ditentukan oleh skema yang ditulis dalam Schema Definition Language (SDL). Skema tersebut mendeklarasikan tipe, bidangnya, serta tipe akar Query, Mutation, dan Subscription yang dapat dioperasikan oleh klien.

Skema adalah kontrak antara klien dan server. Tim frontend dan backend dapat bekerja secara paralel setelah skema disepakati.

Menulis Kueri GraphQL

Kueri GraphQL memilih bidang: { user(id: "1") { name email posts { title } } }. Bidang bertingkat menelusuri hubungan dalam satu permintaan. Alias mengganti nama bidang: { me: user(id: "1") { name } }. Fragmen menggunakan kembali pilihan bidang di beberapa kueri.

Variabel membuat kueri dapat digunakan kembali: query GetUser($id: ID!) { user(id: $id) { name } } dengan variabel: { id: "1" }.

Resolver di Server

Setiap bidang dalam skema GraphQL memiliki fungsi resolver di server. Saat klien meminta user.name, resolver pengguna mengambil objek pengguna dan resolver nama (atau resolver bawaan) mengembalikan bidang name.

Penyelesaian pada tingkat bidang inilah yang memungkinkan GraphQL mengambil hanya data yang diminta secara tepat.

Masalah N+1

Jika Anda meminta daftar 100 postingan dan setiap postingan menyertakan penulisnya, implementasi naif akan menjalankan 100 kueri basis data terpisah untuk para penulis. Masalah N+1 ini membuat API GraphQL lambat tanpa pengoptimalan.

DataLoader mengatasi N+1 dengan mengelompokkan semua pencarian penulis menjadi satu kueri basis data menggunakan tembolok per permintaan dan fungsi pengelompokan.

GraphQL Playground dan Apollo Studio

Apollo Studio dan GraphQL Playground adalah antarmuka pengguna berbasis peramban untuk menjelajahi API GraphQL secara interaktif. Keduanya melengkapi bidang secara otomatis berdasarkan skema, menampilkan hasil kueri, dan menampilkan dokumentasi tipe secara langsung.

Menggunakan lingkungan eksplorasi tersebut adalah cara tercepat untuk memahami API GraphQL yang belum dikenal sebelum menulis kode klien.

Introspeksi Tipe

API GraphQL mengekspos skemanya sendiri melalui kueri introspeksi: { __schema { types { name } } }. Klien dapat membuat kueri terhadap skema itu sendiri untuk menemukan tipe, bidang, dan argumen yang tersedia.

Alat pembuat kode seperti graphql-codegen menggunakan introspeksi untuk menghasilkan tipe TypeScript yang sesuai dengan skema API secara otomatis.

Mutasi dan Langganan

Mutasi GraphQL mengubah data: mutation CreatePost($input: PostInput!) { createPost(input: $input) { id title } }. Langganan membuat koneksi yang bertahan lama (biasanya WebSocket) dan mengirim pembaruan: subscription { postAdded { id title } }.

Ketiga tipe akar (Query, Mutation, Subscription) menggunakan sintaks pemilihan bidang yang sama.

Saat GraphQL Lebih Unggul daripada REST

GraphQL sangat unggul dalam aplikasi dengan persyaratan data yang kompleks dan bertingkat, beberapa jenis klien (seluler, web, TV) yang memerlukan bagian bidang berbeda, atau API yang berkembang pesat ketika penandaan bidang sebagai usang lebih disukai daripada pembuatan versi titik akhir.

REST lebih sederhana untuk API CRUD dengan bentuk sumber daya yang datar dan dapat diprediksi, serta karakteristik penyimpanan cache HTTP yang sangat baik melalui ETags dan header cache.

Klien GraphQL: Apollo, URQL, React Query

Apollo Client adalah klien GraphQL yang paling kaya fitur: cache ternormalisasi, pengelolaan status lokal, langganan, dan tautan penanganan kesalahan. URQL lebih ringan dengan cache dokumen dan API yang lebih sederhana. React Query dengan graphql-request adalah pendekatan paling sederhana untuk kueri+mutasi dasar tanpa kemampuan cache yang canggih.

Pilih berdasarkan kebutuhan cache Anda: gunakan cache ternormalisasi untuk entitas yang digunakan bersama oleh beberapa kueri (Apollo), atau cache dokumen yang lebih sederhana untuk kueri independen (URQL atau React Query).

Contoh SDL

SDL sederhana: type User { id: ID! name: String! posts: [Post!]! } type Post { id: ID! title: String! author: User! } type Query { user(id: ID!): User users: [User!]! }. Tanda seru menunjukkan bidang yang tidak boleh bernilai null.

Skema ini memberi tahu klien secara tepat bidang apa yang ada pada setiap tipe dan kueri apa saja yang tersedia, sehingga memungkinkan pembuatan kode yang aman terhadap tipe.

Pengambilan Data Berlebih/Kurang oleh GraphQL

Apa arti "pengambilan data berlebih" dalam konteks REST dibandingkan dengan GraphQL?

Ringkasan Pelajaran

GraphQL memungkinkan klien meminta tepat bidang yang mereka perlukan (tanpa pengambilan data berlebih atau kurang) menggunakan bahasa kueri yang ditentukan oleh skema. Penyelesai menjawab setiap bidang; DataLoader mengatasi masalah N+1. Introspeksi memungkinkan pembuatan kode untuk tipe TypeScript. Apollo Client, URQL, dan React Query adalah klien GraphQL utama yang kompatibel dengan React.

Pilih GraphQL untuk persyaratan data yang kompleks, bertingkat, dan digunakan oleh banyak klien; pilih REST untuk CRUD sederhana dengan bentuk yang dapat diprediksi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar-Dasar GraphQL untuk Pengembang React” gratis?

Ya — teks lengkap “Dasar-Dasar GraphQL untuk Pengembang React” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Dasar-Dasar GraphQL untuk Pengembang React”?

Pahami query, mutasi, subscription, dan skema GraphQL dari sudut pandang pengembang frontend. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Dasar-Dasar GraphQL untuk Pengembang React” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar GraphQL untuk Pengembang React
  2. Menyiapkan Apollo Client di React
  3. Hook useQuery dan useMutation
  4. Cache Apollo: Normalisasi dan Pembaruan
← Kembali ke React Academy