,

Express.js: Comment créer une API Rest complète avec une base de données (mini MongoDB) et les opérations CRUD

Posted by


EXPRESS.JS : Créer une API Rest COMPLÈTE | CRUD avec Base de Données (mini MongoDB)

Express.js est un framework de développement d’applications web basé sur Node.js. Il permet de créer facilement des serveurs web et des API RESTful. Dans cet article, nous allons voir comment créer une API REST complète avec une base de données MongoDB.

Qu’est-ce qu’une API RESTful ?

Une API RESTful (Representational State Transfer) est une interface de programmation d’applications qui permet à des systèmes de communiquer entre eux via le protocole HTTP. Cette architecture repose sur l’utilisation de différentes méthodes HTTP pour interagir avec les ressources d’une application web.

Dans une API RESTful, les ressources sont généralement exposées sous forme d’URI (Uniform Resource Identifier) et peuvent être manipulées à l’aide des méthodes HTTP telles que GET, POST, PUT et DELETE.

Configurer l’environnement de développement

Avant de commencer, assurez-vous d’avoir installé Node.js sur votre machine. Vous pouvez le télécharger depuis le site officiel de Node.js (https://nodejs.org). Une fois installé, vous pouvez vérifier sa version en exécutant la commande suivante dans votre terminal :

node --version

Ensuite, créez un nouveau dossier pour votre projet et initialisez un projet Node.js en exécutant la commande suivante :

npm init -y

Cela va créer un fichier package.json qui contiendra les informations sur votre projet et ses dépendances.

Installer Express.js et MongoDB

Pour installer Express.js et MongoDB, exécutez les commandes suivantes dans votre terminal :

npm install express
npm install mongodb

Vous pouvez également installer d’autres modules nécessaires à votre projet, tels que body-parser pour analyser les requêtes HTTP et cors pour permettre à votre API d’être appelée depuis des domaines différents :

npm install body-parser
npm install cors

Configurer le serveur Express.js

Créez un fichier server.js dans votre dossier de projet et ouvrez-le dans votre éditeur de code préféré. Ce fichier sera le point d’entrée de votre application.

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();

app.use(bodyParser.json());
app.use(cors());

const port = 3000;

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

Ce code initialise une instance d’Express.js, configure le middleware pour analyser le corps des requêtes HTTP au format JSON, et active CORS pour permettre à l’API d’être appelée depuis n’importe quel domaine.

Ensuite, nous définissons le port sur lequel notre serveur écoutera les requêtes HTTP. Dans cet exemple, nous utilisons le port 3000, mais vous pouvez utiliser n’importe quel autre port disponible sur votre machine.

Enfin, nous démarrons le serveur en appelant la méthode listen() et en lui passant le numéro de port et une fonction de callback qui sera exécutée une fois le serveur démarré.

Configurer la base de données MongoDB

Avant de pouvoir interagir avec une base de données MongoDB, vous devez vous assurer d’avoir une instance de MongoDB en cours d’exécution sur votre machine. Vous pouvez vous rendre sur le site officiel de MongoDB pour télécharger et installer MongoDB Community Edition (https://www.mongodb.com/try/download/community).

Une fois MongoDB installé, vous pouvez créer une base de données pour votre projet en exécutant la commande suivante dans votre terminal :

mongo
use nom_de_votre_base_de_données

Remplacez “nom_de_votre_base_de_données” par le nom de votre choix.

Ensuite, dans votre fichier server.js, ajoutez les lignes suivantes pour configurer la connexion à votre base de données :

const MongoClient = require('mongodb').MongoClient;

const url = 'mongodb://localhost:27017';
const dbName = 'nom_de_votre_base_de_données';

// Connexion à la base de données
MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {
  if (err) return console.error(err);

  console.log('Connected to database');

  const db = client.db(dbName);
});

Ce code utilise le module MongoDB pour établir une connexion avec votre base de données. Vous devez spécifier l’URL de la base de données (par défaut, MongoDB s’exécute sur le port 27017 de votre machine locale) et le nom de votre base de données.

La méthode connect() établit la connexion à la base de données et renvoie un objet client que nous utilisons pour accéder à notre base de données. Vous pouvez également spécifier l’option useUnifiedTopology pour éviter une erreur de dépréciation liée à la détection des mises à jour du serveur MongoDB.

Créer les endpoints CRUD

Une fois la configuration de la base de données terminée, nous pouvons commencer à créer les endpoints pour notre API.

Dans votre fichier server.js, ajoutez les lignes suivantes :

// Endpoint GET pour récupérer tous les éléments
app.get('/elements', (req, res) => {
  const collection = db.collection('elements');

  collection.find().toArray((err, result) => {
    if (err) return res.status(500).send(err);

    res.send(result);
  });
});

// Endpoint POST pour créer un nouvel élément
app.post('/elements', (req, res) => {
  const collection = db.collection('elements');
  const element = req.body;

  collection.insertOne(element, (err, result) => {
    if (err) return res.status(500).send(err);

    res.send(result.ops[0]);
  });
});

// Endpoint PUT pour mettre à jour un élément
app.put('/elements/:id', (req, res) => {
  const collection = db.collection('elements');
  const id = req.params.id;
  const updates = req.body;

  collection.findOneAndUpdate({ _id: ObjectId(id) }, { $set: updates }, { returnOriginal: false }, (err, result) => {
    if (err) return res.status(500).send(err);

    res.send(result.value);
  });
});

// Endpoint DELETE pour supprimer un élément
app.delete('/elements/:id', (req, res) => {
  const collection = db.collection('elements');
  const id = req.params.id;

  collection.deleteOne({ _id: ObjectId(id) }, (err, result) => {
    if (err) return res.status(500).send(err);

    res.send(result.deletedCount);
  });
});

Ces endpoints permettent respectivement de :

  • Récupérer tous les éléments de la collection ‘elements’ en appelant la méthode find() de MongoDB.
  • Créer un nouvel élément en appelant la méthode insertOne() de MongoDB.
  • Mettre à jour un élément en appelant la méthode findOneAndUpdate() de MongoDB.
  • Supprimer un élément en appelant la méthode deleteOne() de MongoDB.

Ces endpoints utilisent les différentes méthodes HTTP pour spécifier l’action à effectuer sur la ressource demandée.

Vous pouvez tester ces endpoints en utilisant des outils tels que Postman ou curl. Par exemple, pour créer un nouvel élément, vous pouvez envoyer une requête POST à l’URL http://localhost:3000/elements avec les données de l’élément dans le corps de la requête.

Conclusion

Dans cet article, nous avons vu comment créer une API REST complète avec Express.js et une base de données MongoDB. Express.js facilite grandement le développement d’APIs RESTful en fournissant des fonctionnalités prêtes à l’emploi pour gérer les requêtes HTTP, tandis que MongoDB est une base de données NoSQL rapide et évolutive.

Grâce à Express.js et MongoDB, vous pouvez rapidement mettre en place une API performante pour votre application web ou mobile, et interagir avec une base de données sans avoir à vous soucier de la gestion des connexions et des requêtes SQL.

0 0 votes
Article Rating
8 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Hardcoders
1 year ago

📰 REÇOIS LE JOURNAL DU CODE : https://hardcode.rs/jdc/?id=201118
Alors, tu vas créer ton API ?

Sarah
1 year ago

Merci beaucoup pour ta vidéo sa m'a permis de mieux comprendre mes cours et d'avoir un projet à mettre sur mon Github ^^

Caliscanne
1 year ago

bonjour merci pour la video, une partie 2 pour le front end ?

Bonasera Undertakers
1 year ago

Salut, bravo pour ta chaine que je viens de découvrir ce jour, pour info grace à ton interview chez la capsule, les indications de raccourcis clavier c'est génial , par contre l'encadré franchement ca bouffe trop de surface de l'écran, c'est que mon avis, ca bouffe trop de viewport :))

killervolant47
1 year ago

Merci pour cette vidéo et la découverte de nedb. Tu penses qu'elle peut gérer une db avec beaucoup d'entrée ou c'est juste pour des petits projets ?

Anthony Gorski
1 year ago

Il y a koa aussi 🙂

MoLo PoLoR
1 year ago

cool cool merci beaucoup

SANSA Hamdi
1 year ago

Bsr, est ce que vous avez expliqué react hooks?! Merci 🙂