GraphQL skema - AWS AppSync

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

GraphQL skema

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 dan/atau dimodifikasi.

Skema GraphQL ditulis dalam Schema Definition Language (). SDL SDLterdiri 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 ruang lingkup 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).

  • Bidang: Bidang ada dalam lingkup tipe dan menyimpan nilai yang diminta dari layanan GraphQL. Ini sangat mirip dengan variabel dalam bahasa pemrograman lain. Bentuk data yang Anda tentukan di bidang Anda akan menentukan bagaimana data terstruktur dalam operasi permintaan/respons. 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 akan berada dalam file bernama schema.graphql atauschema.json. Mari kita asumsikan bahwa kita mengintip ke dalam 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. Kode mungkin terlihat seperti ini:

schema.graphql
type Person { id: ID! name: String age: Int } type Query { people: [Person] } type Mutation { addPerson(id: ID!, name: String, age: Int): Person }

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 tipe ini menjadi objek. Di dalam ruang lingkupnya, kita lihatid,name, danage. Ini adalah bidang yang menentukan properti dari aPerson. Ini berarti sumber data kami menyimpan masing-masing Person name sebagai tipe String skalar (primitif) dan age sebagai tipe Int skalar (primitif). idBertindak 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 jenis objek khusus yang menentukan bagaimana data akan diisi dalam skema. QueryTipe akan mengambil data dari sumbernya. Dalam contoh kita, query kita mungkin mengambil Person objek dari database. Ini mungkin mengingatkan Anda tentang GET operasi dalam RESTful terminologi. 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 negara seperti PUT atau. POST Perilaku semua jenis 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 disebutpeople. Nilai bidangnya adalah[Person]. Ini berarti kita ingin mengambil beberapa contoh dari Person dalam database. Namun, penambahan tanda kurung berarti bahwa kita ingin mengembalikan daftar semua Person instance dan bukan hanya yang spesifik.

MutationTipe ini bertanggung jawab untuk melakukan operasi perubahan status seperti modifikasi data. Mutasi bertanggung jawab untuk melakukan beberapa operasi yang mengubah keadaan pada sumber data. Dalam contoh kita, mutasi kita berisi operasi yang disebut addPerson yang menambahkan Person objek baru ke database. Mutasi menggunakan a Person dan mengharapkan input untukid,name, dan age bidang.

Pada titik ini, Anda mungkin bertanya-tanya bagaimana operasi seperti addPerson bekerja tanpa implementasi kode mengingat bahwa itu seharusnya melakukan beberapa perilaku dan terlihat sangat mirip fungsi dengan nama fungsi dan parameter. Saat ini, itu 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 paling sederhana skema dapat memanipulasi data. Anda membangun aplikasi yang kompleks, kuat, dan dapat diskalakan dengan memanfaatkan fitur GraphQL dan. AWS AppSync Di bagian selanjutnya, kita akan mendefinisikan semua jenis dan perilaku lapangan yang berbeda yang dapat Anda manfaatkan 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. Di bagian berikut, Anda akan menemukan komponen lain dari API GraphQL dan bagaimana mereka bekerja dengan skema.