GraphQL ialah bahasa pertanyaan yang boleh digunakan untuk meminta data dalam API. Ia ialah bahasa pertanyaan yang ditaip kuat yang membantu kami mentakrifkan medan yang boleh diminta dalam API dan jenis setiap medan. GraphQL pada asalnya dibangunkan oleh Facebook dan sejak itu telah menjadi sumber terbuka dan digunakan secara meluas untuk membina aplikasi web.
Node.js ialah persekitaran masa jalan JavaScript yang popular yang membolehkan kami menulis aplikasi sebelah pelayan menggunakan JavaScript. Kecekapan Node.js dan ekosistem yang teguh menjadikannya ideal untuk membina API berprestasi tinggi. Terdapat banyak perpustakaan GraphQL dalam Node.js yang menjadikan penggunaan API GraphQL sangat mudah dan cekap.
Artikel ini akan memperkenalkan cara menggunakan GraphQL untuk menanyakan data dalam Node.js. Kami akan menggunakan aplikasi mudah berdasarkan Node.js dan rangka kerja Express untuk menanyakan data menggunakan GraphQL.
Langkah 1: Cipta aplikasi Express yang mudah dan konfigurasikan GraphQL
Mula-mula, kita perlu mencipta aplikasi Node.js. Mari gunakan rangka kerja Express untuk membina aplikasi kami. Sebelum membuat aplikasi, pastikan Node.js dan npm dipasang pada sistem anda. Kami boleh menyemak sama ada Node.js dipasang dengan memasukkan arahan berikut dalam terminal:
node -v
Jika anda telah berjaya memasang Node.js, anda sepatutnya melihat nombor versi dipasang.
Seterusnya, buat direktori projek baharu dalam terminal dan mulakan npm:
mkdir nodejs-graphql-demo cd nodejs-graphql-demo npm init -y
Sekarang, mari kita pasang kebergantungan yang diperlukan menggunakan arahan berikut:
npm install express graphql express-graphql
Dalam Sebelum ini meneruskan, marilah kita memahami kebergantungan ini secara terperinci.
Seterusnya, mari kita cipta fail server.js baharu dalam direktori rumah projek dan tambah kandungan berikut:
const express = require('express'); const { graphqlHTTP } = require('express-graphql'); const { buildSchema } = require('graphql'); const app = express(); const schema = buildSchema(` type Query { message: String } `); const root = { message: () => 'Hello World!' }; app.use('/graphql', graphqlHTTP({ schema: schema, rootValue: root, graphiql: true })); const PORT = process.env.PORT || 5000; app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
Dalam kod di atas, kami mula-mula mengimport Express, graphqlHTTP dan modul binaSkema. Seterusnya, kami mencipta contoh Express dan mentakrifkan skema pertanyaan mudah menggunakan fungsi buildSchema. Corak pertanyaan kami mengandungi hanya satu medan pertanyaan yang dipanggil mesej dan mengembalikan rentetan.
Seterusnya, kami mentakrifkan objek JavaScript bernama root, yang mengandungi fungsi mesej yang mengembalikan "Hello World!" Dalam GraphQL, objek ini dipanggil objek penyelesai akar. Kami mentakrifkan perisian tengah untuk GraphQL dan menggunakan skema dan objek penyelesai akar yang baru kami buat. Perisian tengah ini akan menyediakan perkhidmatan GraphQL pada laluan yang dihalakan ke /graphql, dan pilihan graphiql yang ditetapkan kepada benar akan membolehkan antara muka GraphiQL.
Akhir sekali, kami memulakan aplikasi menggunakan kaedah dengar contoh Express dan dengar pada port 5000.
Langkah 2: Uji pertanyaan GraphQL
Kami telah berjaya mengkonfigurasi perisian tengah GraphQL dan kini kami boleh menguji pertanyaan kami. Mari gunakan Posmen untuk melakukan ini. Pertama, kita perlu memasang dan memulakan Posman. Mulakan Posmen dengan memasukkan arahan berikut dalam terminal:
postman
Sekarang, mari kita buat permintaan POST baharu dan tetapkan URL kepada http://localhost:5000/graphql. Dalam badan permintaan, tambahkan pertanyaan berikut pada editor pertanyaan GraphQL:
query { message }
Kini kami boleh menghantar permintaan dan melihat respons. Respons harus mengandungi perkara berikut:
{ "data": { "message": "Hello World!" } }
Seperti yang anda lihat, kami berjaya mendapat respons daripada pertanyaan GraphQL. Mari tingkatkan pertanyaan kami dengan lebih banyak medan dan jenis pertanyaan.
Langkah 3: Tambahkan lebih banyak medan dan jenis pertanyaan
Sekarang, mari kembangkan corak pertanyaan kami untuk memasukkan lebih banyak medan dan jenis. Mari kita lihat contoh berikut:
const schema = buildSchema(` type Query { message: String number: Int person: Person } type Person { name: String age: Int address: Address } type Address { street: String city: String state: String country: String } `); const root = { message: () => 'Hello World!', number: () => 42, person: () => ({ name: 'John Doe', age: 30, address: { street: '123 Main St', city: 'Anytown', state: 'CA', country: 'USA' } }) };
Dalam kod di atas, kami telah menambah medan pertanyaan integer dipanggil nombor dan medan pertanyaan dipanggil orang, yang mengembalikan objek jenis Orang. Kami juga mentakrifkan jenis Orang dan Alamat.
Dalam objek penghurai akar, kami mentakrifkan fungsi yang sepadan dengan medan dan jenis baharu. Medan mesej dan nombor masing-masing mengembalikan rentetan dan integer, manakala medan orang mengembalikan objek Orang yang medan dan nilainya ditentukan oleh kami.
Sekarang, mari kita uji pertanyaan baharu. Kami boleh menggunakan pertanyaan berikut:
query { message number person { name age address { street city state country } } }
Respons harus mengandungi perkara berikut:
{ "data": { "message": "Hello World!", "number": 42, "person": { "name": "John Doe", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "state": "CA", "country": "USA" } } } }
Seperti yang anda lihat, kami telah berjaya menanyakan medan dan jenis baharu. Anda boleh menambah lebih banyak medan dan jenis mengikut keperluan untuk mengembalikan lebih banyak data berguna dalam API.
Kesimpulan
Dalam artikel ini, kami mempelajari cara membuat pertanyaan data menggunakan GraphQL dalam Node.js. Kami mencipta aplikasi mudah berdasarkan rangka kerja Express dan menggunakan perisian tengah Express dan modul GraphQL untuk menanyakan data secara pengaturcaraan. Kami juga telah menambah lebih banyak medan dan jenis pertanyaan untuk meningkatkan pertanyaan kami. GraphQL ialah alat yang sangat berkuasa dan berguna yang membantu kami membina API yang cekap dan berskala.
Atas ialah kandungan terperinci pertanyaan graphql nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!