Hot Takes

Développement d'une API sécurisée pour une application d'avis sur des sauces piquantes — projet 6 du parcours Développeur Web OpenClassrooms.

  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • API REST
  • JWT
  • Bcrypt
  • Multer

Hot Takes

Projet numéro 6 du parcours Développeur Web chez OpenClassrooms.

Objectif

Développer le backend et l’API sécurisée d’une application permettant aux utilisateurs de partager et d’évaluer leurs sauces piquantes préférées.

Le frontend de l’application était fourni par OpenClassrooms. Le travail du projet portait principalement sur la création du serveur Node.js, de l’API REST, de la base de données et du système d’authentification.

Fonctionnalités

  • Création de comptes utilisateurs
  • Authentification sécurisée
  • Génération de tokens JWT
  • Chiffrement des mots de passe avec Bcrypt
  • Création de sauces
  • Consultation des sauces
  • Modification des sauces
  • Suppression des sauces
  • Ajout et gestion des images avec Multer
  • Système de likes et dislikes
  • Stockage des données avec MongoDB
  • Contrôle des accès aux différentes routes de l’API

Ce que j’ai appris

Ce projet m’a permis de développer des compétences en :

  • Node.js
  • Express
  • Création d’une API REST
  • MongoDB et Mongoose
  • Architecture backend
  • Création de routes et de contrôleurs
  • Authentification avec JWT
  • Sécurisation des mots de passe avec Bcrypt
  • Création de middlewares
  • Gestion des fichiers et images avec Multer
  • Gestion des erreurs HTTP
  • Sécurisation des routes d’une API

À propos de la démonstration

Le frontend utilisé pour ce projet était fourni par OpenClassrooms sous la forme d’une application déjà compilée. Le développement du frontend ne faisait donc pas partie du travail demandé pour ce projet.

La version actuellement mise en ligne permet de tester le backend et les principales fonctionnalités de l’API : inscription, connexion, création et manipulation des sauces.

La base de données de démonstration est volontairement vide à l’origine : les sauces affichées sont celles ajoutées par les utilisateurs lors des tests.

Le frontend fourni avec cette ancienne version du projet n’assure pas la persistance de la session utilisateur après un rechargement complet de la page. Une reconnexion peut donc être nécessaire après actualisation.

Cette limitation concerne le frontend de démonstration fourni et non l’API développée dans le cadre du projet.

La suite

Ce projet m’a permis de passer du développement frontend à la conception d’un véritable backend avec Node.js, Express et MongoDB.

Il m’a notamment permis de comprendre le fonctionnement d’une API REST, la communication entre un frontend et un serveur, la persistance des données, l’authentification par token et les principales problématiques de sécurité côté backend.