apollo-federation

Apollo Federation permet de composer plusieurs API GraphQL (sous-graphes) en un super

npx skills add https://github.com/apollographql/skills --skill apollo-federation

Apollo Federation Schema Authoring

Apollo Federation enables composing multiple GraphQL APIs (subgraphs) into a unified supergraph.

Federation 2 Schema Setup

Every Federation 2 subgraph must opt-in via @link:

extend schema
  @link(url: "https://specs.apollo.dev/federation/v2.12",
        import: ["@key", "@shareable", "@external", "@requires", "@provides"])

Import only the directives your subgraph uses. The version shown (v2.12) is illustrative — check the Federation changelog for currently supported versions before copying it verbatim.

A subgraph's @link version is a floor, not the composition version — see Federation versions for the full explanation.

Core Directives Quick Reference

DirectivePurposeExample
@keyDefine entity with unique keytype Product @key(fields: "id")
@shareableAllow multiple subgraphs to resolve fieldtype Position @shareable { x: Int! }
@externalReference field from another subgraphweight: Int @external
@requiresComputed field depending on external fieldsshippingCost: Int @requires(fields: "weight")
@providesConditionally resolve external field@provides(fields: "name")
@overrideMigrate field to this subgraph@override(from: "Products")
@inaccessibleHide from API schemainternalId: ID! @inaccessible
@interfaceObjectAdd fields to entity interfacetype Media @interfaceObject

Reference Files

Detailed documentation for specific topics:

  • Directives - All federation directives with syntax, examples, and rules
  • Schema Patterns - Multi-subgraph patterns and recipes
  • Composition - Composition rules, error codes, and debugging

Key Patterns

Entity Definition

type Product @key(fields: "id") {
  id: ID!
  name: String!
  price: Int
}

Entity Contributions Across Subgraphs

# Products subgraph
type Product @key(fields: "id") {
  id: ID!
  name: String!
  price: Int
}

# Reviews subgraph
type Product @key(fields: "id") {
  id: ID!
  reviews: [Review!]!
  averageRating: Float
}

Computed Fields with @requires

type Product @key(fields: "id") {
  id: ID!
  size: Int @external
  weight: Int @external
  shippingEstimate: String @requires(fields: "size weight")
}

Value Types with @shareable

type Money @shareable {
  amount: Int!
  currency: String!
}

Entity Stub (Reference Without Contributing)

type Product @key(fields: "id", resolvable: false) {
  id: ID!
}

Ground Rules

  • ALWAYS use Federation 2.x syntax with @link directive
  • ALWAYS import only the directives your subgraph uses
  • NEVER use @shareable without ensuring all subgraphs return identical values for that field
  • PREFER @key with single ID field for simple entity identification
  • USE rover supergraph compose to validate composition locally
  • USE rover subgraph check to validate against production supergraph

Plus de skills de apollographql

apollo-ios
apollographql
Apollo iOS est un client GraphQL fortement typé pour les plateformes Apple. Il génère des types Swift à partir de vos opérations et schémas GraphQL, et fournit un client async/await, un cache normalisé (en mémoire ou basé sur SQLite), un transport HTTP basé sur des intercepteurs pluggables qui gère les requêtes, mutations et abonnements multipart, ainsi qu'un transport WebSocket optionnel (graphql-transport-ws) pouvant prendre en charge tout type d'opération.
apollo-router
apollographql
Apollo Router est un routeur de graphes haute performance écrit en Rust pour exécuter les supergraphes Apollo Federation 2. Il se place devant vos sous-graphes et gère la planification des requêtes, l'exécution et la composition des réponses.
apollo-router-plugin-creator
apollographql
Créez des plugins Rust natifs pour Apollo Router.
apollo-server
apollographql
Guide complet pour construire des serveurs GraphQL avec Apollo Server 5.x à travers différents frameworks. Couvre la définition de schéma, les résolveurs, la configuration du contexte et la gestion des erreurs avec le support TypeScript. Prend en charge le mode autonome pour le prototypage et les intégrations avec Express, Fastify, Koa et les environnements serverless. Inclut les modèles de résolveurs, l'authentification/autorisation, les plugins, DataLoader pour la prévention N+1 et les techniques d'optimisation des performances. Fournit une documentation de référence pour les sources de données, les erreurs...
graphql-operations
apollographql
Guide des bonnes pratiques pour rédiger des opérations GraphQL efficaces et typées en toute sécurité, et les organiser avec des fragments. Couvre les requêtes, mutations, souscriptions et fragments avec conventions de nommage, syntaxe des variables et utilisation des directives. Met l'accent sur les principes fondamentaux : ne demander que les champs nécessaires, nommer toutes les opérations, utiliser des variables au lieu de valeurs codées en dur, et inclure les champs d'identifiant pour la mise en cache. Recommande de colocaliser les fragments avec les composants et d'utiliser les directives @include / @skip pour les champs conditionnels...
graphql-schema
apollographql
Guide des meilleures pratiques industrielles pour concevoir des schémas GraphQL intuitifs, performants et maintenables. Couvre les principes de conception fondamentaux, notamment l'organisation des types centrée sur le client, les modèles de nullabilité explicite et les stratégies d'évolution rétrocompatibles. Fournit une documentation de référence sur les types, les conventions de nommage, la pagination basée sur curseur, la modélisation des erreurs et les considérations de sécurité. Inclut des modèles pratiques pour les interfaces, les unions, les types d'entrée, les mutations et les stratégies d'identifiant avec des exemples de code...
rover
apollographql
We need to translate the given text from English to French, preserving the name "rover" and other technical terms. The text describes the Apollo Rover CLI. We must not include the name unless it appears in the source text. The source text includes "rover" in "Apollo Rover CLI" and "rover dev command". So we keep "rover" as is. Also preserve "GraphQL", "federation", "supergraph", "GraphOS", "CI/CD", "JSON", etc. Translate the rest naturally. Let's translate: "Apollo Rover CLI for managing GraphQL schemas, federation, and local supergraph development. Publish, fetch, and validate subgraph schemas; compose federated supergraphs locally or via GraphOS Includes schema checking (pre-deploy validation), linting, and introspection from running servers rover dev command starts a local Router with automatic schema composition for development workflows Supports CI/CD patterns with check-before-publish validation and JSON output for scripting Requires..." Translation: "Apollo Rover CLI pour la gestion des schémas Graph
rust-best-practices
apollographql
Normes de codage Rust idiomatiques basées sur le manuel des bonnes pratiques d'Apollo GraphQL. Couvre neuf domaines clés : styles et idiomes de codage, linting avec clippy, optimisation des performances, gestion des erreurs, modèles de test, génériques et dispatch, pattern type state, documentation et sécurité des pointeurs. Met l'accent sur l'emprunt plutôt que le clonage, la gestion des erreurs basée sur Result avec thiserror/anyhow, et le profilage des performances avec les builds release. Inclut des conseils de référence rapide sur les modèles de possession, l'évitement des paniques,...