Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Skema GraphQL
Skema GraphQL adalah dasar dari GraphQL API. Ini berfungsi sebagai cetak biru yang mendefinisikan bentuk data Anda. Ini juga merupakan kontrak antara klien dan server Anda yang menentukan bagaimana data Anda akan diambil and/or dimodifikasi.
Skema GraphQL ditulis dalam Schem a Definition Language (SDL). SDL terdiri dari jenis dan bidang dengan struktur yang mapan:
-
Jenis: Jenis adalah bagaimana GraphQL mendefinisikan bentuk dan perilaku data. GraphQL mendukung banyak jenis yang akan dijelaskan nanti di bagian ini. Setiap jenis yang didefinisikan dalam skema Anda akan berisi cakupannya sendiri. Di dalam cakupan akan ada satu atau lebih bidang yang dapat berisi nilai atau logika yang akan digunakan dalam layanan GraphQL Anda. Jenis mengisi banyak peran yang berbeda, yang paling umum adalah objek atau skalar (tipe nilai primitif).
-
Bid ang: Bidang ada dalam lingkup tipe dan menyimpan nilai yang diminta dari layanan GraphQL. Ini sangat mirip dengan variabel dalam bahasa pemrograman lainnya. Bentuk data yang Anda tentukan di bidang Anda akan menentukan bagaimana data terstruktur dalam suatu request/response operasi. Hal ini memungkinkan pengembang untuk memprediksi apa yang akan dikembalikan tanpa mengetahui bagaimana backend layanan diimplementasikan.
Untuk memvisualisasikan seperti apa skema, mari kita tinjau isi skema GraphQL sederhana. Dalam kode produksi, skema Anda biasanya berada dalam file yang disebut schema.graphql atauschema.json. Mari kita asumsikan bahwa kita mengintip proyek yang mengimplementasikan layanan GraphQL. Proyek ini menyimpan data personel perusahaan, dan schema.graphql file tersebut digunakan untuk mengambil data personel dan menambahkan personel baru ke database. Kodenya mungkin terlihat seperti ini:
Kita dapat melihat bahwa ada tiga jenis yang didefinisikan dalam skema:Person,Query, danMutation. MelihatPerson, kita dapat menebak bahwa ini adalah cetak biru untuk contoh karyawan perusahaan, yang akan membuat jenis ini menjadi objek. Di dalam ruang lingkupnya, kita melihat idname,, danage. Ini adalah bidang yang menentukan properti aPerson. Ini berarti sumber data kami menyimpan masing-masing Person name sebagai tipe String skalar (primitif) dan age sebagai tipe Int skalar (primitif). Ber id tindak sebagai pengidentifikasi khusus dan unik untuk masing-masingPerson. Ini juga merupakan nilai yang diperlukan seperti yang dilambangkan dengan ! simbol.
Dua tipe objek berikutnya berperilaku berbeda. GraphQL menyimpan beberapa kata kunci untuk tipe objek khusus yang menentukan bagaimana data akan diisi dalam skema. Ti Query pe akan mengambil data dari sumbernya. Dalam contoh kita, query kita mungkin mengambil Person objek dari database. Ini mungkin mengingatkan Anda tentang GET operasi dalam terminologi RESTful. A Mutation akan memodifikasi data. Dalam contoh kita, mutasi kita dapat menambahkan lebih banyak Person objek ke database. Ini mungkin mengingatkan Anda tentang operasi yang mengubah keadaan seperti PUT atauPOST. Perilaku semua tipe objek khusus akan dijelaskan nanti di bagian ini.
Mari kita asumsikan Query dalam contoh kita akan mengambil sesuatu dari database. Jika kita melihat bidangQuery, kita melihat satu bidang yang disebutpeople. Nilai bidangnya adalah[Person]. Ini berarti kita ingin mengambil beberapa contoh Person dalam database. Namun, penambahan tanda kurung berarti bahwa kami ingin mengembalikan daftar semua Person contoh dan bukan hanya yang spesifik.
Jenis Mutation ini bertanggung jawab untuk melakukan operasi pengubah status seperti modifikasi data. Mutasi bertanggung jawab untuk melakukan beberapa operasi pengubah keadaan pada sumber data. Dalam contoh kita, mutasi kita berisi operasi addPerson yang disebut yang menambahkan Person objek baru ke database. Mutasi menggunakan a Person dan mengharapkan input untuk age bidang idname,, dan.
Pada titik ini, Anda mungkin bertanya-tanya bagaimana operasi seperti addPerson bekerja tanpa implementasi kode mengingat seharusnya melakukan beberapa perilaku dan sangat mirip fungsi dengan nama fungsi dan parameter. Saat ini, ini tidak akan berfungsi karena skema hanya berfungsi sebagai deklarasi. Untuk mengimplementasikan perilakuaddPerson, kita harus menambahkan resolver ke dalamnya. Resolver adalah unit kode yang dieksekusi setiap kali bidang terkait (dalam hal ini, addPerson operasi) dipanggil. Jika Anda ingin menggunakan operasi, Anda harus menambahkan implementasi resolver di beberapa titik. Di satu sisi, Anda dapat menganggap operasi skema sebagai deklarasi fungsi dan resolver sebagai definisi. Resolver akan dijelaskan di bagian yang berbeda.
Contoh ini hanya menunjukkan cara sederhana skema dapat memanipulasi data. Anda membangun aplikasi yang kompleks, kuat, dan dapat diskalakan dengan memanfaatkan fitur GraphQL dan. AWS AppSync Pada bagian selanjutnya, kita akan mendefinisikan semua jenis dan perilaku bidang yang berbeda yang dapat Anda gunakan dalam skema Anda.
Seperti yang Anda lihat, ada banyak komponen bergerak di GraphQL. Pada bagian ini, kami menunjukkan struktur skema sederhana dan berbagai jenis dan bidang yang didukung skema. Pada bagian berikut, Anda akan menemukan komponen lain dari GraphQL API dan bagaimana mereka bekerja dengan skema.