Construire une API REST à l’aide de Node.js, Express.js et MongoDB, et la tester sur Postman

-

Dans ce tutoriel, nous allons construire une API REST en utilisant Node.js avec la base de données MongoDB.

Qu’est-ce qu’une API ?

API est l’acronyme de Application Programming Interface (interface de programmation d’applications), qui est un intermédiaire logiciel permettant à deux applications de communiquer entre elles. Chaque fois que vous utilisez une application comme Facebook, envoyez un message instantané ou consultez la météo sur votre téléphone, vous utilisez une API.

Prérequis pour le tutoriel :

  • Nodejs installé dans votre système
  • Connaissance de base de JavaScript
  • Compréhension de toute base de données (relationnelle/non relationnelle)

Ne vous inquiétez pas ! Si vous ne connaissez pas tous ces éléments au premier rang, vous les apprendrez tous dans ce tutoriel.

1. Configuration du projet

Ici, j’utilise VS code comme éditeur de code et MongoDB atlas pour stocker toutes les données. La structure entière du projet devrait ressembler à ceci :

Créez un dossier dans votre système et nommez-le « API ». Vous pouvez le nommer comme vous le souhaitez. Ouvrez ce dossier dans votre éditeur de code et allez dans le terminal.
Dans votre terminal, tapez

npm init

La commande npm init va initialiser un projet et créer le fichier package.json.

Après cela, nous devons installer Express.js et toutes les autres dépendances pour le projet.

Encore une fois, tapez ce qui suit dans le terminal :

npm install express dotenv mongoose body-parser cors

Ainsi, express s’occupera de notre serveur.

dotenv vous permet de séparer les secrets de votre code source.

Mongoose est une bibliothèque de modélisation des données d’objets (ODM) pour MongoDB et Node.js. Elle gère les relations entre les données, fournit une validation de schéma et est utilisée pour traduire les objets dans le code et la représentation de ces objets dans MongoDB.

Le module body-parser analyse les données codées JSON, buffer, string et URL soumises à l’aide d’une requête HTTP POST. CORS est l’abréviation de Cross-Origin Resource Sharing (partage de ressources entre origines). Il nous permet de relâcher la sécurité appliquée à une API.

Et maintenant nous allons installer nodemon, donc tapez dans le terminal :

npm install -g nodemon

Le module nodemon est un module qui développe des applications basées sur node.js en redémarrant automatiquement l’application node lorsque des changements de fichiers dans le répertoire sont détectés.

Après l’installation, ajoutez ce qui suit dans la section script de votre fichier package.json :

"scripts": {
"start": "nodemon server.js"
},

2. Configuration du serveur

Créons notre tout premier serveur. Créez un fichier nommé server.js et écrivez ce code :

require('dotent').config();
const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const cors = require('cors');

const PORT = process.env.PORT || 6666 ;
const todoRoutes = require('./routes/todo');

// database connection
require('./config/database');

app.use(cors());
app.use(bodyParser.urlencoded({extended: true}));

// routes
app.use('/api/todos', todoRoutes);

// server running status
app.listen(PORT, () => {
  // eslint-disable-next-line no-console
  console.log(`The app listening at http://localhost: ${PORT}`)
});

Créez un fichier nommé « .env » et mettez ce code dedans:

PORT=7777
MONGO_URL="mongodb+srv://<USERNAME>:<PASSWORD>@cluster0.dlkzt.mongodb.net/<DATABASE>?retryWrites=true&w=majority"

Ici, nous avons ajouté un numéro de port et l’URL de connexion MongoDB. Laissez-moi vous dire comment vous pouvez obtenir l’URL de MongoDB en premier lieu.

3. Configuration de la base de données

Allez sur MongoDB Atlas et créez un cluster, cela peut prendre quelques minutes à configurer. Après cela, cliquez sur Connecter, puis sur Connecter votre application. Vous obtiendrez alors votre URL de connexion MongoDB.

Vous aller pouvoir créer le fichier config/database.js avec le code suivant

// Import the mongoose module
const mongoose = require('mongoose');

// Set up default mongoose connection
const mongoDB = process.env.MONGO_URL || null;
mongoose.connect(mongoDB, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

// Get the default connection
var db = mongoose.connection;

//Bind connection to error event (to get notification of connection errors)
// eslint-disable-next-line no-console
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

4. Configuration du modèle

Pour chaque donnée dans la base de données, nous avons besoin d’un modèle par lequel nous pouvons télécharger et maintenir les données appropriées. Ici, nous utilisons Mongoose pour créer le modèle de la base de données.

const mongoose = require( 'mongoose')

const Todos = mongoose.model( 'Todos', {
  todo: {
    type: String,
  },
  time : {
    type : Date,
    default: Date.now,
  },
})

module.exports = { Todos }

5. Configuration des routes

Créez un dossier nommé routes dans le répertoire principal, créez un fichier nommé todo.js où toutes les routes seront établies. Maintenant ces lignes à votre fichier todo.js dans le dossier routes :

const express = require( 'express');
const router = express.Router();

// Require controller modules.
const todoControllers = require('../controllers/todoControllers')

router.get('/', todoControllers.index);

router.post('/', todoControllers.insert);

router.put('/:id', todoControllers.update);

router.delete('/:id', todoControllers.delete);

module.exports = router;

Dans ce fichier, nous avons créé 4 routes pour obtenir la liste de tous les todo, créer un todo, mettre à jour un todo spécifique, et en supprimer un. Toute la logique de l’entreprise va aller dans la section contrôleur.

Chaque requête entrante sera dirigée vers des méthodes spécifiques du contrôleur.

6. Configuration des contrôleurs

Un contrôleur est la partie principale de l’application où toute votre logique métier résidera. Nous avons besoin de blocs logiques spécifiques pour différentes méthodes.

/* eslint-disable no-console */
var { Todos } = require('../models/todoModel');
var ObjectID = require( 'mongoose'). Types.ObjectId;

exports.index = (req, res ) => {
  Todos.find((err, docs) => {
    if (!err) {
      res.send(docs)
    } else {
      res.status(500).send(err)
    }
  })
};

exports.searchById = (req, res) => {
  const id = req.params.id;
  res.send(`Id found : ${id}`);
}

exports.insert = (req, res ) => {
  const todoItem = req.body.todo;
  const newTodos = new Todos({todo: todoItem});
  newTodos.save((err, docs) => {
    if (!err) {
      res.status(201).send(docs)
    } else {
      res.status(500).send(err)
    }
  });
}

exports.update = (req, res) => {
  const id = req.params.id;
  console.log(`update with given id: ${id}`);

  if(!ObjectID.isValid(id)){
    return res.send(400).send(`No record with given id: ${id}`)
  }

  const todoItem = req.body.todo;
  const newTodo = {
    todo: todoItem
  };

  Todos.findByIdAndUpdate(id, {$set: newTodo},{new: true},(err,docs )=>{
    if(!err){
      res.status(200).send(docs)
    } else {
      console.log('Error while updating the data' + JSON.stringify(err, undefined, 2))
    }
  })
}

exports.delete = (req, res ) => {
  const id = req.params.id;
  if (!ObjectID.isValid(id)) {
    return res.send(400).send(`No record with given id: ${id}`)
  }

  Todos.findByIdAndRemove(id, (err, docs) => {
    const result = {
      data: docs,
      message: 'Todo has been removed successfully.',
      status: 200,
    }

    if (!err) {
      res.status(200).send(result)
    } else {
      res.status(500).send(err)
    }
  })
}

Ainsi, de cette façon, nous sommes prêts avec les points de terminaison de l’API. Maintenant, la partie la plus cruciale est celle où nous allons tester les APIs. Avant cela, ouvrez votre terminal et exécutez npm start pour démarrer votre application.

7. Postman

Pour les tests d’API, nous utilisons Postman. Vous pouvez télécharger la version de bureau ou l’utiliser dans le navigateur.

8. Test API :

(a). Insérer tâche :

Url : http://localhost:3000/api/todos/
Méthode : POST

Cela signifie que les données ont été insérées avec succès. Si vous voulez toujours le vérifier à partir de la base de données, vous trouverez ceci :

(b) liste des tâches:

Url: http://localhost:3000/api/todos/
Method: GET

De cette façon, nous pouvons obtenir toute la liste des tâches à accomplir.

(c) Mise à jour d’une tâche spécifique:

Url: http://localhost:3000/api/todos/61de2036a402007b4350de07
Method: PUT

Vous devez passer l’identifiant spécifique à la fin de l’URL et passer la valeur mise à jour de la tâche dans les données du formulaire.

(d) Supprimer une tâche spécifique :

Url: http://localhost:3000/api/todos/delete/61de2036a402007b4350de07
Méthode : DELETE

De la même manière que l’API de mise à jour fonctionne, nous devons passer l’ID spécifique à la fin de l’URL et utiliser la méthode delete.

Conclusion

Alors voilà. Nous avons réussi à créer une API REST en utilisant Node.js, Express.js et MongoDB. Nous espérons que ce tutoriel vous aidera à comprendre le concept de base derrière chaque API REST.

Voici le repos github pour les besoins de cet article : github.com/alfreddagenais/kilukru-dev-api-rest-nodejs-express-mongo

Merci beaucoup d’avoir lu jusqu’à la fin. Vous pouvez me contacter si vous avez besoin d’aide.

Alfred
Alfredhttps://www.alfreddagenais.com
Salut ! Moi, c'est Alfred, développeur dans l’âme et explorateur de l'infini Web. Je suis constamment à la recherche de nouvelles idées et je pense que le développement web et l'informatique ont le pouvoir de transformer le monde. Je suis un grand admirateur de l'expérimentation, parce que c'est souvent de là que naissent les idées les plus créatives. Je suis convaincu que l'humour est un ingrédient clé de la vie, alors j'essaie toujours de glisser une blague ou deux dans mon code (pas toujours facile à comprendre, mais c'est le risque à prendre). En dehors de la programmation, j'aime passer du temps avec ma famille et mes amis, découvrir de nouveaux endroits et cuisiner des plats délicieux (du moins, j'essaie). Si vous voulez discuter de développement web, d'innovation, ou tout simplement échanger des blagues, n'hésitez pas à me contacter. Je suis toujours partant pour une bonne conversation !

Share this article

Recent posts

Popular categories

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Recent comments