React Academy · Pelajaran

Asas GraphQL untuk Pembangun React

Fahami pertanyaan, mutasi, langganan dan skema GraphQL dari perspektif pembangun frontend.

Pelajaran 1 daripada 413 langkah

Asas GraphQL untuk Pembangun React ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.

GraphQL berbanding REST

REST mendedahkan titik akhir berbentuk tetap: GET /users/:id memulangkan keseluruhan objek pengguna tanpa mengira perkara yang diperlukan oleh klien. GraphQL membolehkan klien menentukan medan yang diperlukan dengan tepat, sekali gus menghapuskan pengambilan berlebihan (terlalu banyak data) dan pengambilan tidak mencukupi (data tidak mencukupi sehingga memerlukan beberapa permintaan).

Satu pertanyaan GraphQL boleh mendapatkan pengguna, kiriman mereka dan pengarang setiap kiriman dalam satu perjalanan pergi balik.

Skema GraphQL

Setiap API GraphQL ditakrifkan oleh skema yang ditulis dalam Bahasa Definisi Skema (SDL). Skema mengisytiharkan jenis, medan dan jenis akar Query, Mutation serta Subscription yang boleh dikendalikan oleh klien.

Skema ialah kontrak antara klien dan pelayan. Pasukan bahagian hadapan dan bahagian belakang boleh bekerja secara selari sebaik sahaja skema dipersetujui.

Menulis Pertanyaan GraphQL

Pertanyaan GraphQL memilih medan: { user(id: "1") { name email posts { title } } }. Medan bersarang merentasi hubungan dalam satu permintaan. Alias menamakan semula medan: { me: user(id: "1") { name } }. Fragmen menggunakan semula pilihan medan merentas beberapa pertanyaan.

Pemboleh ubah menjadikan pertanyaan boleh digunakan semula: query GetUser($id: ID!) { user(id: $id) { name } } dengan pemboleh ubah: { id: "1" }.

Penyelesai pada Pelayan

Setiap medan dalam skema GraphQL mempunyai fungsi penyelesai pada pelayan. Apabila klien membuat pertanyaan user.name, penyelesai pengguna mendapatkan objek pengguna dan penyelesai name (atau penyelesai lalai) memulangkan medan name.

Penyelesaian pada peringkat medan inilah yang membolehkan GraphQL mendapatkan hanya data yang diminta dengan tepat.

Masalah N+1

Jika anda membuat pertanyaan untuk senarai 100 kiriman dan setiap kiriman menyertakan pengarangnya, pelaksanaan naif akan melaksanakan 100 pertanyaan pangkalan data berasingan untuk pengarang. Masalah N+1 ini menjadikan API GraphQL perlahan tanpa pengoptimuman.

DataLoader menyelesaikan N+1 dengan mengumpulkan semua carian pengarang ke dalam satu pertanyaan pangkalan data menggunakan cache setiap permintaan dan fungsi kelompok.

GraphQL Playground dan Apollo Studio

Apollo Studio dan GraphQL Playground ialah antara muka pengguna berasaskan pelayar untuk meneroka API GraphQL secara interaktif. Kedua-duanya melengkapkan medan secara automatik daripada skema, memaparkan hasil pertanyaan dan menunjukkan dokumentasi jenis secara sebaris.

Menggunakan alat ini ialah cara terpantas untuk memahami API GraphQL yang tidak biasa sebelum menulis kod klien.

Introspeksi Jenis

API GraphQL mendedahkan skemanya sendiri melalui pertanyaan introspeksi: { __schema { types { name } } }. Klien boleh membuat pertanyaan terhadap skema itu sendiri untuk menemukan jenis, medan dan argumen yang tersedia.

Alat penjanaan kod seperti graphql-codegen menggunakan introspeksi untuk menjana jenis TypeScript yang sepadan dengan skema API secara automatik.

Mutasi dan Langganan

Mutasi GraphQL mengubah suai data: mutation CreatePost($input: PostInput!) { createPost(input: $input) { id title } }. Langganan mewujudkan sambungan berterusan, biasanya WebSocket, dan menolak kemas kini: subscription { postAdded { id title } }.

Ketiga-tiga jenis akar (Query, Mutation, Subscription) menggunakan sintaks pemilihan medan yang sama.

Kelebihan GraphQL Berbanding REST

GraphQL sangat sesuai untuk aplikasi yang mempunyai keperluan data yang kompleks dan bersarang, pelbagai jenis klien (mudah alih, web, TV) yang memerlukan subset medan berbeza, atau API yang berkembang pesat apabila penyusutan medan lebih diutamakan daripada pemversian titik akhir.

REST lebih ringkas untuk API CRUD dengan bentuk sumber yang rata dan boleh dijangka serta ciri pencachean HTTP yang sangat baik melalui ETag dan pengepala cache.

Klien GraphQL: Apollo, URQL, React Query

Apollo Client ialah klien GraphQL yang paling kaya ciri: cache ternormalisasi, pengurusan keadaan setempat, langganan dan pautan pengendalian ralat. URQL lebih ringan dengan cache dokumen dan API yang lebih ringkas. React Query dengan graphql-request ialah pendekatan paling mudah untuk pertanyaan+mutasi asas tanpa kecanggihan pencachean.

Pilih berdasarkan keperluan pencachean anda: cache ternormalisasi untuk entiti yang dikongsi merentas pertanyaan (Apollo), atau cache dokumen yang lebih ringkas untuk pertanyaan bebas (URQL atau React Query).

Contoh SDL

SDL ringkas: 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 medan yang tidak boleh bernilai nol.

Skema ini memberitahu klien dengan tepat medan yang wujud pada setiap jenis dan pertanyaan yang tersedia, sekali gus membolehkan penjanaan kod yang selamat dari segi jenis.

Pengambilan Data Berlebihan atau Kurang dalam GraphQL

Apakah maksud "pengambilan data berlebihan" dalam konteks REST berbanding GraphQL?

Rumusan Pelajaran

GraphQL membolehkan klien meminta tepat medan yang diperlukan, tanpa pengambilan data berlebihan atau kurang, menggunakan bahasa pertanyaan yang ditakrifkan oleh skema. Penyelesai menjawab setiap medan; DataLoader menyelesaikan masalah N+1. Introspeksi membolehkan penjanaan kod untuk jenis TypeScript. Apollo Client, URQL dan React Query ialah klien GraphQL utama yang serasi dengan React.

Pilih GraphQL untuk keperluan data yang kompleks, bersarang dan melibatkan berbilang klien; pilih REST untuk CRUD yang ringkas dengan bentuk yang boleh dijangka.

Percuma untuk bermula

Pelajari React dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
88
Pelajaran
324

Soalan Lazim

Adakah pelajaran “Asas GraphQL untuk Pembangun React” percuma?

Ya — teks penuh “Asas GraphQL untuk Pembangun React” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Asas GraphQL untuk Pembangun React”?

Fahami pertanyaan, mutasi, langganan dan skema GraphQL dari perspektif pembangun frontend. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan React Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Asas GraphQL untuk Pembangun React” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Asas GraphQL untuk Pembangun React
  2. Menyediakan Klien Apollo dalam React
  3. Hook useQuery dan useMutation
  4. Cache Apollo: Penormalan dan Kemas Kini
← Kembali ke React Academy