Receber por email
← Voltar para o catálogo

apollo-server

Apollo Server configuration, plugins, caching, federation, and performance optimization.

1.4kestrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add a5c-ai/babysitter

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/apollo-server/svg)](https://www.skillteca.com.br/skills/apollo-server)

Skills relacionadas

Ver todas de Automação →

Alerta por categoria

Receba novas skills de Automação toda segunda

1 email curto, só com as skills novas de Automação. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Apollo Server Skill

Expert assistance for implementing GraphQL APIs with Apollo Server.

Capabilities

  • Configure Apollo Server with Express/Fastify
  • Implement plugins for logging and metrics
  • Set up caching strategies
  • Build Apollo Federation gateways
  • Handle authentication context
  • Optimize performance with persisted queries

Usage

Invoke this skill when you need to:

  • Set up Apollo Server
  • Implement caching
  • Build federated services
  • Add custom plugins
  • Configure subscriptions

Patterns

Basic Setup

import { ApolloServer } from '@apollo/server';
import { expressMiddleware } from '@apollo/server/express4';
import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer';
import express from 'express';
import http from 'http';
import cors from 'cors';
import { typeDefs } from './schema';
import { resolvers } from './resolvers';
import { createContext } from './context';

async function startServer() {
  const app = express();
  const httpServer = http.createServer(app);

  const server = new ApolloServer({
    typeDefs,
    resolvers,
    plugins: [ApolloServerPluginDrainHttpServer({ httpServer })],
  });

  await server.start();

  app.use(
    '/graphql',
    cors(),
    express.json(),
    expressMiddleware(server, {
      context: createContext,
    })
  );

  await new Promise<void>((resolve) =>
    httpServer.listen({ port: 4000 }, resolve)
  );

  console.log('Server ready at http://localhost:4000/graphql');
}

Context and Authentication

import { PrismaClient } from '@prisma/client';
import jwt from 'jsonwebtoken';

const prisma = new PrismaClient();

export interface Context {
  prisma: PrismaClient;
  user: { id: string; role: string } | null;
}

export async function createContext({ req }): Promise<Context> {
  const token = req.headers.authorization?.replace('Bearer ', '');
  let user = null;

  if (token) {
    try {
      user = jwt.verify(token, process.env.JWT_SECRET!) as Context['user'];
    } catch {}
  }

  return { prisma, user };
}

Best Practices

  • Use plugins for cross-cutting concerns
  • Implement proper error formatting
  • Set up response caching
  • Use DataLoader for batching

Target Processes

  • graphql-api-development
  • apollo-federation
  • api-development
Compartilhar X LinkedIn