Apollo bilan plaginlar
Plaginlar Apollo Serverning asosiy funksionalligini kengaytirish imkonini beradi; ular ma'lum hodisalarga javoban custom operatsiyalarni bajaradi. Hozirda bu hodisalar GraphQL so'r
Plaginlar Apollo Serverning asosiy funksionalligini kengaytirish imkonini beradi; ular ma'lum hodisalarga javoban custom operatsiyalarni bajaradi. Hozirda bu hodisalar GraphQL so'rovining hayotiy sikli bosqichlariga va Apollo Serverning ishga tushishiga mos keladi (batafsil bu yerda). Masalan, oddiy logging plagini Apollo Serverga yuborilgan har bir so'rov bilan bog'liq GraphQL query satrini loglashi mumkin.
Custom plaginlar
Plagin yaratish uchun @nestjs/apollo paketidan eksport qilinadigan @Plugin dekoratori bilan belgilangan klassni e'lon qiling. Shuningdek, yaxshiroq kod autocomplete uchun @apollo/server paketidan ApolloServerPlugin interfeysini implementatsiya qiling.
1import { ApolloServerPlugin, GraphQLRequestListener } from '@apollo/server';
2import { Plugin } from '@nestjs/apollo';
3
4@Plugin()
5export class LoggingPlugin implements ApolloServerPlugin {
6 async requestDidStart(): Promise<GraphQLRequestListener<any>> {
7 console.log('Request started');
8 return {
9 async willSendResponse() {
10 console.log('Will send response');
11 },
12 };
13 }
14}Shu bilan, LoggingPlugin ni provider sifatida ro'yxatdan o'tkazishimiz mumkin.
1@Module({
2 providers: [LoggingPlugin],
3})
4export class CommonModule {}Nest plaginni avtomatik instansiyalaydi va Apollo Serverga qo'llaydi.
Tashqi plaginlardan foydalanish
Bir nechta tayyor plaginlar mavjud. Mavjud plaginni ishlatish uchun uni import qiling va plugins massiviga qo'shing:
1GraphQLModule.forRoot({
2 // ...
3 plugins: [ApolloServerOperationRegistry({ /* options */})]
4}),ApolloServerOperationRegistry plagini @apollo/server-plugin-operation-registry paketidan eksport qilinadi.
Mercurius bilan plaginlar
Meruriusga xos Fastify plaginlarining ayrimlari mercurius plaginidan keyin plugin tree ichida yuklanishi kerak (batafsil bu yerda).
mercurius-upload bundan mustasno va main faylda ro'yxatdan o'tkazilishi kerak.
Buning uchun MercuriusDriver ixtiyoriy plugins konfiguratsiya opsiyasini taqdim etadi. U plugin va options atributlaridan iborat obyektlar massivini ifodalaydi. Shuning uchun cache pluginni ro'yxatdan o'tkazish quyidagicha ko'rinadi:
1GraphQLModule.forRoot({
2 driver: MercuriusDriver,
3 // ...
4 plugins: [
5 {
6 plugin: cache,
7 options: {
8 ttl: 10,
9 policy: {
10 Query: {
11 add: true
12 }
13 }
14 },
15 }
16 ]
17}),