Créer une API GraphQL avec Node.js nécessite plusieurs étapes :
1. Installation des paquets nécessaires : Commencez par installer `express`, `express-graphql` et `graphql` en utilisant npm (le gestionnaire de paquets Node.js) :
```
npm install express express-graphql graphql
```
1. Configuration du serveur : Créez un nouveau fichier `server.js` (ou `app.js`) et importez-y les packages nécessaires. Configurez ensuite un serveur Express de base.
```
const express = require(‘express’);
const { graphqlHTTP } = require(‘express-graphql’);
const { buildSchema } = require(‘graphql’);
const app = express();
```
1. Définissez le schéma : GraphQL utilise un schéma pour définir les types de données et les relations entre elles. Le schéma est une instance de la classe GraphQLSchema de `graphql`, qui prend un objet qui défini les types et les relations. Par exemple:
```
const schema = buildSchema(`
type Query {
message: String
}
`);
```
Ce schéma indique qu’il y a un type de requête (`Query`) avec un champ `message` qui renvoie une chaîne de caractères.
1. Définir les résolveurs : Les résolveurs sont des fonctions qui gèrent les requêtes spécifiques faites à l’API. Dans ce cas, nous devons implémenter un resolveur pour `message`:
```
const root = {
message: () => ‘Hello World!‘
};
```
1. Utilisez le middleware `graphqlHTTP` : Utiliser `app.use()` pour ajouter le middleware `graphqlHTTP` à votre serveur Express. Cette fonction prend un objet contenant votre schéma et vos résolveurs (rootValue).
```
app.use(‘/graphql’, graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true, // Permet d’utiliser GraphiQL IDE
}));
```
1. Démarrez le serveur : Enfin, démarrez votre serveur en utilisant `app.listen()`:
```
app.listen(4000, () => console.log(‘Now browse to localhost:4000/graphql’));
```
Voilà ! Vous avez créé une simple API GraphQL avec Node.js. Maintenant, vous pouvez aller à `localhost:4000/graphql` dans votre navigateur et vous verrez l’interface de l’IDE GraphiQL, où vous pouvez tester vos requêtes GraphQL. Par exemple, essayez d’écrire `{ message }` dans la fenêtre de requête et appuyez sur le bouton “Exécuter” pour voir la réponse de l’API.