Artikel ini menunjukkan jahitan skema dalam pelbagai contoh fauna, mewujudkan API GraphQL bersatu dari sumber data yang berbeza. Kami juga akan meneroka menggabungkan fauna dengan perkhidmatan GraphQL yang lain.
Memahami jahitan skema
Jahitan Skema adalah teknik untuk membina API GraphQL tunggal dari pelbagai API GraphQL yang mendasari.
Mengapa menggunakan jahitan skema?
Aplikasi berskala besar sering menggunakan microservices untuk modularity. Walau bagaimanapun, aplikasi klien sering memerlukan data dari pelbagai sumber. API GraphQL bersatu menyediakan antara muka yang bersih, tetapi membina pelayan monolitik boleh menjadi masalah. GraphQL asli Fauna setiap pangkalan data adalah ideal, tetapi pelbagai pangkalan data memerlukan penyambungan ke pelbagai keadaan, mewujudkan gandingan yang ketat. Jahitan skema menyelesaikan ini dengan menggabungkan pelbagai perkhidmatan GraphQL ke dalam skema bersatu tunggal. Artikel ini merangkumi:
Menyatukan pelbagai contoh fauna
Mari menggabungkan pelbagai contoh pangkalan data Fauna (misalnya, Product
, Inventory
, Review
) ke dalam perkhidmatan GraphQL tunggal. Setiap pangkalan data mempunyai API GRAPHQL sendiri (subgraph). Matlamat kami adalah graf bersatu untuk aplikasi klien untuk menanyakan data di semua sumber.
Grafik bersatu ini akan menjadi perkhidmatan gerbang kami. Kami akan membina ini menggunakan Node.js.
Persediaan Projek: Buat Projek Node.js:
mkdir my-gateway CD my-gateway npm init --yes
Pasang Ketergantungan:
NPM I Express Express-Graphql Graphql @Graphql-Tools/Skema @Graphql-Tools/Stitch @Graphql-Tools/Wrap Cross-Fetch--Save
Server Graphql Asas (Gateway.js): Mulakan dengan pelayan GraphQL Express Mudah:
// gateway.js (versi awal) // ... (persediaan pelayan ekspres) ...
(Kod awal ini akan menjadi pelayan tulang telanjang, sama dengan contoh asal, tetapi ditinggalkan untuk keringkasan untuk memberi tumpuan kepada aspek jahitan.)
Persediaan Pangkalan Data Fauna: Buat tiga pangkalan data Fauna ( Product
, Inventory
, Review
) dan menjana kunci admin. Tentukan skema GraphQL untuk setiap pangkalan data (seperti yang ditunjukkan dalam contoh asal).
Peningkatan Perkhidmatan Gateway (Gateway.js): Melaksanakan jahitan skema menggunakan @graphql-tools/stitch
. Bahagian ini akan merangkumi fungsi makeRemoteExecutor
dan makeGatewaySchema
seperti yang diterangkan dalam asal, tetapi dengan kejelasan yang lebih baik dan berpotensi refactored untuk dibaca yang lebih baik. Penambahbaikan utama ialah:
API Pihak Ketiga Jahitan: Memperluas Gateway untuk memasukkan API GraphQL pihak ketiga (misalnya, SpaceX API) menggunakan pendekatan makeRemoteExecutor
dan stitchSchemas
yang sama.
Penyebaran ke AWS Lambda: Gunakan rangka kerja tanpa pelayan untuk menggunakan pintu masuk ke fungsi AWS Lambda. Pasang kebergantungan yang diperlukan ( serverless
serverless-http
, body-parser
). Buat fail serverless.yaml
(seperti yang ditunjukkan dalam asal). Ubah suai gateway.js
untuk mengintegrasikan dengan serverless-http
untuk pengendalian fungsi lambda yang betul. Menggunakan menggunakan serverless deploy
.
Kesimpulan
Jahitan Skema menawarkan penyelesaian yang kuat untuk membina API GraphQL yang berskala dan diselenggarakan dari pelbagai sumber data. Walaupun artikel ini menggunakan Fauna dan AWS Lambda, prinsip -prinsip ini digunakan secara meluas kepada perkhidmatan GraphQL yang lain dan platform tanpa pelayan. Pendekatan alternatif seperti Persekutuan Apollo menyediakan fungsi yang sama.
Atas ialah kandungan terperinci Melaksanakan satu graphQL tunggal merentasi pelbagai sumber data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!