Rumah >Peranti teknologi >industri IT >10 soalan graphql anda yang paling biasa dijawab
Artikel ini menjawab sepuluh soalan yang sering ditanya mengenai GraphQL, meliputi topik seperti pengendalian ralat, penomboran, pengesahan, kemas kini masa nyata, muat naik fail, caching, beban batch, masalah pertanyaan n 1, jahitan skema/persekutuan, dan versi.
Takeaways utama:
errors
dalam respons. Kesalahan tersuai boleh dilemparkan dalam resolvers (sisi pelayan), dan pemeriksaan pengendalian sisi klien untuk kehadiran medan errors
. first
, last
, before
, dan after
untuk kawalan. Subscription
dalam skema dan subscribe
medan dalam penentuan untuk menentukan pencetus kemas kini. 1. Pengendalian ralat GraphQL:
GraphQL mengendalikan kesilapan dengan mengembalikan array errors
dalam respons. Setiap objek ralat termasuk message
dan berpotensi butiran lain. Pengendalian ralat pelayan melibatkan membuang kesilapan tersuai dalam resolver (mis., throw new Error('Something went wrong');
dalam JavaScript). Pengendalian ralat pelanggan melibatkan pemeriksaan untuk medan errors
.
2. Pagination GraphQL:
corak "sambungan", menggunakan "tepi" dan "nod," memudahkan penomboran. Argumen seperti first
, last
, before
, dan after
paginasi kawalan. Skema sampel disediakan menggambarkan corak ini untuk pengguna Paginating.
3. Pengesahan dan Kebenaran:
GraphQL tidak semestinya menyokong pengesahan/kebenaran; Ini dilaksanakan melalui middleware atau konteks. Pendekatan berasaskan token (seperti JWT) adalah perkara biasa. Middleware mengesahkan token, menambah pengguna yang disahkan pada konteksnya. Resolvers kemudian mengakses konteks ini untuk pemeriksaan pengesahan dan kebenaran. Contoh JavaScript menunjukkan penggunaan middleware dan konteks.
4. Kemas kini masa nyata dengan langganan:
Langganan membolehkan kemas kini masa nyata. Jenis Subscription
ditakrifkan dalam skema, dan medan subscribe
dalam resolvers menentukan peristiwa pemicu kemas kini. Contoh menggunakan graphql-subscriptions
untuk fungsi pub/sub.
5. Muat naik fail:
pakej graphql-upload
mengendalikan muat naik fail. Ia dipasang (npm install graphql-upload
), skalar Upload
ditambah ke skema, dan proses createReadStream
proses yang dimuat naik dalam resolvers.
6. Caching:
caching dilaksanakan di sisi klien (menggunakan klien Apollo atau relay) dan sisi pelayan (menggunakan DataLoader). Batch Dataloader dan Operasi Data-Fetching Cache, Mengurangkan Pertanyaan Pangkalan Data atau Panggilan API. Contoh pemasangan (npm install dataloader
) dan penggunaan disediakan.
7. Batch Loading:
DataLoader dengan cekap mengendalikan pemuatan batch, mengumpulkan pelbagai permintaan untuk jenis data yang sama ke dalam satu operasi. Ini meningkatkan prestasi dengan meminimumkan hits pangkalan data atau panggilan API.
8. Mengalami N 1 Masalah Pertanyaan:
DataLoader secara berkesan menangani masalah pertanyaan N 1 (di mana mengambil data yang berkaitan membawa kepada pertanyaan yang berlebihan). Dengan mengikat data pengambilan, ia mengurangkan bilangan pertanyaan dan meningkatkan prestasi.
9. Jahitan Skema/Persekutuan:
Jahitan skema (menggunakan graphql-tools
) dan Persekutuan Skema (menggunakan Persekutuan Apollo) menggabungkan pelbagai skema GraphQL. graphql-tools
'SCHEMA FUNGSI, manakala Persekutuan Apollo menggunakan mergeSchemas
dan buildFederatedSchema
untuk penciptaan dan gabungan skema bersekutu. Arahan pemasangan dan penggunaan dimasukkan untuk kedua -duanya. ApolloGateway
10. Versi:
GraphQL tidak mempunyai versi terbina dalam. Evolusi skema adalah pendekatan, menambah bidang/jenis/argumen baru sambil mengekalkan keserasian ke belakang. Bendera Arahan
@deprecated
Atas ialah kandungan terperinci 10 soalan graphql anda yang paling biasa dijawab. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!