Comment créer une API REST en Javascript ?

Comment créer une API REST en Javascript ?

Dans cet article, nous allons voir comment créer une API REST en Javascript en utilisant Node JS. Que vous soyez développeur débutant ou confirmé, vous aurez besoin d’une compréhension de base de Javascript, ainsi qu’un IDE et un Terminal.

Introduction à l’API REST

Avant de plonger dans la création d’une API REST, il est important de comprendre sa structure. Voici les étapes essentielles :

  • Déterminez les ressources dont vous aurez besoin
  • Décidez si vous avez besoin des opérations CRUD (Create, Read, Update, Delete)
  • Définissez les points de terminaison (Endpoints)
  • Documentez votre API pour faciliter la compréhension des autres développeurs

La documentation est particulièrement importante si vous envisagez de rendre votre API publique. Elle permet aux autres développeurs de comprendre son fonctionnement et permet d’avoir des exemples de requêtes et réponses précises.

Maintenant, passons à la création de notre API REST.

Contexte

Imaginons que nous souhaitons créer une API REST permettant à des restaurateurs de gérer leurs commandes. Voici les fonctionnalités que nous voulons inclure :

  • Enregistrer les commandes des clients
  • Visualiser toutes les commandes
  • Modifier les commandes non réglées
  • Supprimer des commandes

Conception de l’API

Avec notre contexte en tête, nous pouvons maintenant identifier la ressource principale de notre API : les commandes. Voici les points de terminaison (URI) que nous allons utiliser :

  • GET /orders
  • POST /orders
  • PUT /orders/{orderID}
  • DELETE /orders/{orderID}

Réalisation

Créez un nouveau dossier et créez un fichier index.js à l’intérieur. Ajoutez le code suivant :

const http = require("http");
const host = "localhost";
const port = 8000;

const requestOrders = function (req, res) {
  res.writeHead(200);
  res.end("Hello world !!");
};

const server = http.createServer(requestOrders);

server.listen(port, host, () => {
  console.log(`Server is running on http://${host}:${port}`);
});

Exécutez la commande node index.js dans votre terminal pour lancer le serveur. Vous devriez voir s’afficher “Server is running on http://localhost:8000“.

À lire aussi  Tout savoir sur GitLab

Ouvrez votre navigateur et tapez http://localhost:8000. Vous devriez voir s’afficher “Hello world !!”. Cela signifie que notre serveur fonctionne correctement.

Nous allons maintenant utiliser l’outil CLI curl dans un autre terminal pour communiquer avec notre serveur.

Avant de créer notre API, ajoutons une constante contenant des exemples de commandes. Ajoutez le code suivant à votre fichier index.js :

let orders = JSON.stringify([
  {
    id: "OGCXnHRzZPjDIoPGyuutcMbx",
    total: 10,
    items: [
      {
        id: "6EqtxEG93VwrRLunr5uyXOJT",
        name: "Salade",
        price: 10,
      },
    ],
  },
  {
    id: "8DhLRD2M7NdzlqUYpDdLX7sb",
    total: 15,
    items: [
      {
        product: [
          {
            id: "jYKdRprTRAhK7GXsEwapaK6L",
            name: "Pâtes",
            price: 15,
          },
        ],
      },
    ],
  },
]);

Maintenant, nous allons implémenter les différentes méthodes de notre API.

Méthode GET

Modifiez la fonction requestOrders() comme suit :

const requestOrders = function (req, res) {
  res.writeHead(200);
  let data = "";
  let orderId = "";

  switch ((req.url, req.method)) {
    case ("/orders", "GET"):
      res.writeHead(200);
      res.end(orders);
      break;
  }
};

Enregistrez et relancez le serveur. Dans un autre terminal, exécutez la commande suivante :

curl -i -X GET http://localhost:8000/orders

Vous devriez voir s’afficher la liste des commandes.

Méthode POST

Ajoutez le code suivant à la fonction requestOrders() :

case ("/orders", "POST"):
  req.on("data", (chunk) => {
    data += chunk;
  });

  req.on("end", () => {
    orders = JSON.stringify(JSON.parse(orders).concat(JSON.parse(data)));
    res.end(orders);
  });

  res.writeHead(200);
  break;

Enregistrez et relancez le serveur. Dans un autre terminal, exécutez la commande suivante pour créer une nouvelle commande :

curl -i -X POST -H 'Content-Type: application/json' -d '{"id": "Dw3ZTpjRK4UVHqC_S6DGqpGe","total": 6,"items": [{"id": "YuHopwCycWGapzKoxh-coL3o","name": "Coca","price": 6}]}'

Vous devriez voir s’afficher la nouvelle liste des commandes.

Méthode PUT

Ajoutez le code suivant à la fonction requestOrders() :

case ("/orders/:id", "PUT"):
  orderId = req.url.split("/").pop();

  req.on("data", (chunk) => {
    data += chunk;
  });

  req.on("end", () => {
    orders = JSON.stringify(
      JSON.parse(orders).map((order) => {
        if (order.id === orderId) return JSON.parse(data);
        return order;
      })
    );

    res.end(orders);
  });

  res.writeHead(200);
  break;

Enregistrez et relancez le serveur. Dans un autre terminal, exécutez la commande suivante pour mettre à jour une commande existante :

curl -i -X PUT -H 'Content-Type: application/json' -d '{"id": "8DhLRD2M7NdzlqUYpDdLX7sb","total": 14,"items": {"id": "DUyibRqzUHCd1kKvOD-wz28O","name": "Hamburger","price": 14}}' http://localhost:8000/orders/8DhLRD2M7NdzlqUYpDdLX7sb

La liste des commandes devrait être mise à jour avec la modification que vous avez effectuée.

À lire aussi  Pourquoi et comment ouvrir un contrat d’assurance-vie ?

Méthode DELETE

Ajoutez le code suivant à la fonction requestOrders() :

case ("/orders/:id", "DELETE"):
  orderId = req.url.split("/").pop();

  orders = JSON.stringify(
    JSON.parse(orders).filter((order) => order.id !== orderId)
  );

  res.writeHead(200);
  res.end(orders);
  break;

Enregistrez et relancez le serveur. Dans un autre terminal, exécutez la commande suivante pour supprimer une commande :

curl -i -X DELETE http://localhost:8000/orders/8DhLRD2M7NdzlqUYpDdLX7sb

La liste des commandes devrait être mise à jour, sans la commande que vous avez supprimée.

Conclusion

Félicitations ! Vous savez maintenant créer une API REST en utilisant Javascript. Vous avez également appris les bases des opérations CRUD (Create, Read, Update, Delete) et comment les implémenter dans votre API.

N’oubliez pas qu’il existe de nombreux outils, tels que Express ou NestJS, qui peuvent simplifier grandement le processus de création d’API REST.

Dans cet article, nous avons utilisé un script rudimentaire, mais il existe de nombreuses améliorations que vous pouvez apporter, comme la gestion des erreurs, la validation des données, ou encore la persistance des données en les stockant dans un fichier.

Amusez-vous bien avec la création de votre propre API REST !