Skip to content

Le Schéma GraphQL ​

https://www.apollographql.com/docs/apollo-server/schema/schema

Système de types ​

Le système de types de GraphQL est la pierre angulaire de son architecture. Il définit un contrat clair entre le client et le serveur.

Types scalaires intégrés :

Les types scalaires sont utilisés pour définir les types de données primaires.

  • Int : Entier 32 bits signé
  • Float : Nombre à virgule flottante
  • String : Chaîne de caractères UTF-8
  • Boolean : Valeur booléenne (true/false)
  • ID : Identifiant unique, souvent utilisé comme clé primaire

Types objets :

Les types objets sont utilisés pour définir les entités de l'API.

graphql
type Product {
  id: ID!
  name: String!
  price: Float!
  description: String
  category: Category
}

Interfaces :

Les interfaces sont utilisées pour définir un contrat commun entre différents types objets.

graphql
interface Node {
  id: ID!
}

type User implements Node {
  id: ID!
  name: String!
}

type Product implements Node {
  id: ID!
  name: String!
  price: Float!
}

Types énumération :

Les types énumération sont utilisés pour définir des ensembles de valeurs possibles d'un type.

graphql
enum OrderStatus {
  PENDING
  PROCESSING
  SHIPPED
  DELIVERED
  CANCELLED
}

Types union :

Les types union sont utilisés pour définir un ensemble de types possibles.

graphql
union SearchResult = User | Product | Article

Types d'entrée :

graphql
input ProductInput {
  name: String!
  price: Float!
  description: String
  categoryId: ID!
}

Modificateurs de types :

  • Type! : Non-nullable (valeur obligatoire)
  • [Type] : Liste
  • [Type!]! : Liste non-nullable contenant des éléments non-nullables

Définition d'un schéma ​

Un schéma GraphQL définit les capacités de l'API à travers trois types d'opérations principales :

Type Query : Point d'entrée pour les opérations de lecture.

graphql
type Query {
  product(id: ID!): Product
  products(category: ID, limit: Int = 10): [Product!]!
  categories: [Category!]!
}

Type Mutation : Point d'entrée pour les opérations de modification.

graphql
type Mutation {
  createProduct(input: ProductInput!): Product!
  updateProduct(id: ID!, input: ProductInput!): Product!
  deleteProduct(id: ID!): Boolean!
}

Type Subscription : Point d'entrée pour les opérations en temps réel.

graphql
type Subscription {
  productUpdated: Product!
  newOrder: Order!
}

Documentation intégrée :

graphql
"""
Représente un utilisateur du système.
"""
type User {
  """
  Identifiant unique de l'utilisateur.
  """
  id: ID!

  "Nom complet de l'utilisateur."
  name: String!
}