Skip to content

Créer une API REST

Introduction à l'API REST et Express Router

Une API REST (Representational State Transfer) est un style architectural pour la conception de réseaux d'applications. Elle permet la communication entre un client et un serveur. Dans une API REST, les données sont généralement échangées en format JSON.

Express Router est une fonctionnalité d’Express.js qui permet de créer de manière modulaire des gestionnaires de route pour votre application. Cela rend votre application plus organisée et maintenable.

Éléments Clés de REST:

  1. Ressources:

    • Les ressources sont les entités principales autour desquelles est construite l'API.
    • Exemple dans la vie de tous les jours: un livre dans une bibliothèque.
  2. URI (Uniform Resource Identifier):

    • Les URI sont utilisés pour identifier de manière unique les ressources.
    • Exemple: http://monapi.com/livres/1 identifie le livre avec l'ID 1.
  3. Verbes HTTP:

    • Les verbes HTTP définissent l'action à effectuer sur la ressource.
    • GET: Récupère une ou plusieurs ressources.
    • POST: Crée une nouvelle ressource.
    • PUT/PATCH: Met à jour une ressource existante.
    • DELETE: Supprime une ressource.
  4. Représentations:

    • Les ressources peuvent avoir une ou plusieurs représentations (comme JSON ou XML) qui définissent comment les données sont présentées au client.
    • Exemple dans la vie de tous les jours: un livre peut être représenté par son titre, son auteur, son résumé, etc.

Comprendre l'architecture REST

Imaginons une bibliothèque pour illustrer le concept de REST.

  • Ressource:

    • Livre dans une bibliothèque.
  • URI:

    • Chaque livre a une étagère et un numéro d'identification unique (comme /etagere/3/livre/45).
  • Verbes HTTP:

    • GET: Aller voir un livre ou consulter la liste des livres disponibles.
    • POST: Ajouter un nouveau livre à l'étagère.
    • PUT/PATCH: Modifier les informations d'un livre existant ou replacer un livre sur une autre étagère.
    • DELETE: Retirer un livre de la bibliothèque.
  • Représentations:

    • Les détails du livre tels que le titre, l'auteur, l'ISBN, etc., peuvent être représentés en JSON:
      json
      {
        "titre": "Les Misérables",
        "auteur": "Victor Hugo",
        "ISBN": "978-1234567890"
      }
      {
        "titre": "Les Misérables",
        "auteur": "Victor Hugo",
        "ISBN": "978-1234567890"
      }

En appliquant ces concepts de REST à la conception de services web, on peut créer des API compréhensibles, maintenables, et qui suivent les conventions et protocoles standards du web.

Création du Projet

Créez un nouveau projet Node.js et installez Express:

sh
mkdir monApiRest
cd monApiRest
npm init -y
npm install express
mkdir monApiRest
cd monApiRest
npm init -y
npm install express

Créez ensuite un fichier principal pour votre application, comme app.js.

Définition des Routes avec Express Router

Dans app.js, commencez par importer express et créez une instance d'application et de router.

javascript
import express from 'express';

const app = express();
const router = express.Router();
import express from 'express';

const app = express();
const router = express.Router();

Ensuite, définissez quelques routes CRUD de base à l'aide de Express Router. CRUD signifie Create, Read, Update, Delete, qui sont les opérations de base dans toute API REST.

javascript
// Route pour obtenir (GET) une liste de ressources
router.get('/', (req, res) => {
  res.json({ message: 'Liste de toutes les ressources' });
});

// Route pour créer (POST) une nouvelle ressource
router.post('/', (req, res) => {
  res.json({ message: 'Ressource créée' });
});

// Route pour obtenir (GET) une ressource spécifique par ID
router.get('/:id', (req, res) => {
  res.json({ message: `Ressource avec l'ID ${req.params.id}` });
});

// Route pour mettre à jour (PUT) une ressource spécifique par ID
router.put('/:id', (req, res) => {
  res.json({ message: `Mise à jour de la ressource avec l'ID ${req.params.id}` });
});

// Route pour supprimer (DELETE) une ressource spécifique par ID
router.delete('/:id', (req, res) => {
  res.json({ message: `Suppression de la ressource avec l'ID ${req.params.id}` });
});
// Route pour obtenir (GET) une liste de ressources
router.get('/', (req, res) => {
  res.json({ message: 'Liste de toutes les ressources' });
});

// Route pour créer (POST) une nouvelle ressource
router.post('/', (req, res) => {
  res.json({ message: 'Ressource créée' });
});

// Route pour obtenir (GET) une ressource spécifique par ID
router.get('/:id', (req, res) => {
  res.json({ message: `Ressource avec l'ID ${req.params.id}` });
});

// Route pour mettre à jour (PUT) une ressource spécifique par ID
router.put('/:id', (req, res) => {
  res.json({ message: `Mise à jour de la ressource avec l'ID ${req.params.id}` });
});

// Route pour supprimer (DELETE) une ressource spécifique par ID
router.delete('/:id', (req, res) => {
  res.json({ message: `Suppression de la ressource avec l'ID ${req.params.id}` });
});

Après avoir défini les routes, montez le router sur un chemin spécifique de votre application.

javascript
app.use('/api/resources', router);
app.use('/api/resources', router);

Enfin, démarrez votre serveur sur le port 3000.

javascript
const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Serveur écoutant sur le port ${PORT}`);
});
const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Serveur écoutant sur le port ${PORT}`);
});

Tester les Routes de l'API REST

Vous pouvez maintenant tester vos routes en utilisant un outil comme Postman ou en envoyant des requêtes HTTP à http://localhost:3000/api/resources avec les différentes méthodes HTTP (GET, POST, PUT, DELETE).

Explications pour Débutants

  • Express Router permet de définir des routes dans des fichiers séparés, ce qui rend le code plus organisé et plus facile à comprendre et à maintenir.

  • API REST est une convention pour créer des points d'accès (endpoints) dans votre application qui répondent à des méthodes HTTP standard, telles que GET pour récupérer des données, POST pour créer de nouvelles données, PUT pour mettre à jour des données existantes et DELETE pour supprimer des données.

  • CRUD fait référence aux opérations de base que vous pouvez effectuer sur des données: Créer, Lire, Mettre à jour et Supprimer.

Code Complet app.js:

javascript
import express from 'express';

const app = express();
const router = express.Router();

router.get('/', (req, res) => {
  res.json({ message: 'Liste de toutes les ressources' });
});

router.post('/', (req, res) => {
  res.json({ message: 'Ressource créée' });
});

router.get('/:id', (req, res) => {
  res.json({ message: `Ressource avec l'ID ${req.params.id}` });
});

router.put('/:id', (req, res) => {
  res.json({ message: `Mise à jour de la ressource avec l'ID ${req.params.id}` });
});

router.delete('/:id', (req, res) => {
  res.json({ message: `Suppression de la ressource avec l'ID ${req.params.id}` });
});

app.use('/api/resources', router);

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Serveur écoutant sur le port ${PORT}`);
});
import express from 'express';

const app = express();
const router = express.Router();

router.get('/', (req, res) => {
  res.json({ message: 'Liste de toutes les ressources' });
});

router.post('/', (req, res) => {
  res.json({ message: 'Ressource créée' });
});

router.get('/:id', (req, res) => {
  res.json({ message: `Ressource avec l'ID ${req.params.id}` });
});

router.put('/:id', (req, res) => {
  res.json({ message: `Mise à jour de la ressource avec l'ID ${req.params.id}` });
});

router.delete('/:id', (req, res) => {
  res.json({ message: `Suppression de la ressource avec l'ID ${req.params.id}` });
});

app.use('/api/resources', router);

const PORT = 3000;
app.listen(PORT, () => {
  console.log(`Serveur écoutant sur le port ${PORT}`);
});

En structurant votre code avec Express Router et en suivant les principes de l'API REST, vous pouvez créer des applications web robustes, organisées et maintenables.