Exercice 03 - HelloWorldApi
Créez un nouveau projet dans lequel vous allez coder votre premier API en Node.js à l'aide d'Express.
Installation des modules
- Pour cet exercice utilisez les modules suivants :
Express
etNodemon
- Créez ensuite un fichier index.js et utilisez le code donné en exemple dans les notes de cours d'un petit serveur web avec Express.
- Utilisez l'intergiciel express.json() dans votre fichier index.js pour convertir les données JSON en objet JavaScript.
Structure de l'application
Respectez la structure d'application tel que décrite dans les notes de cours. (Créez uniquement les fichiers nécessaires)
- index.js : La porte d'entrée de votre api
- salutations.route.js : Les routes associées avec les salutations
- salutations.controller.js : La logique de votre code pour accéder ou modifier les informations des salutations.
- salutations.model.js : Les données de salutations
Simulation des données
On va simuler l'accès à la base de données avec le tableau d'objets suivant. Créez le fichier salutations.model.js dans votre projet et copiez le code suivant:
Ensuite pour utiliser votre tableau vous pouvez faire import { salutations, AjouterSalutation } from '../salutations.model.js';
dans un autre fichier (ajuster le chemin au besoin).
Postman
Dans le logiciel Postman, créz un répertoire pour l'exercice et enregistrez une requête pour chacune des routes que vous allez créer.
Routage
Votre api comportera les routes suivante:
Méthode | Route | Description |
---|---|---|
GET | /api | Message de bienvenue à l'api |
GET | /api/salutations/liste | Afficher la liste de toutes les salutations |
GET | /api/salutations?langue=[fr,en,es,de] | Afficher une salutation aléatoire. Si le paramètre est ajouté et valide, la salutation sera dans la langue choisie |
POST | /api/salutations | Ajouter une salutation (voir aide plus bas) |
- Vous devez utiliser l'objet Router pour regrouper toutes les routes "salutations" dans un même fichier: salutations.route.js.
GET /api
- Vous pouvez conservez l'exemple présent dans les notes de cours dans le fichier index.js
GET /api/salutations/liste
- Retournez simplement la liste de toutes les salutations au format JSON
GET /api/salutations?langue=[fr,en,es,de]
- Retournez une salutations aléatoire depuis le tableau au format JSON
- Si un code de langue est fourni, sélectionnez la salutation parmi celles de cette langue
- Si le code n'existe pas, si aucune salutation ne correspond à ce code, retournez le message suivant au format JSON avec le code de statut 404. Remplacez la valeur de code par celle envoyée en paramêtre.
Aide
Avec Express, pour accéder aux paramètres de la section requête de l'url on peut utiliser req.query.nomParam
. Pour tester si le paramètre existe, on peut faire le test avec un simple if comme ceci if(req.query.langue) {}
// Exemple de récupération du paramêtre langue
if(req.query.langue) {
console.log(req.query.langue);
} else {
console.log("Le paramètre langue est manquant");
}
J'ai utilisé array.filter() pour ne conserver que les salutations qui correspondent au code de la langue.
POST /api/salutations
- Vous devez dans le corps de la requête envoyer les informations suivantes en JSON (utilisez Postman le faire) :
- Si vous utilisez l'intergiciel express.json() vous avez accès aux données par l'objet req. Il ne vous reste ensuite qu'à ajouter les valeurs au tableau salutations.
app.post('/', (req, res) => {
const message = req.body.message; // Il y a un item message dans le json envoyé
...
if(!req.body.message) {
console.log("Le paramètre message est absent");
}
...
});
- Créez une fonction dans le fichier salutations.model.js qui va s'occuper d'ajouter dans le tableau le nouvel objet salutation.
- Dans le fichier salutations.controller.js validez que toutes les informations sont présente, sinon retournez le message suivant au format JSON avec le code d'erreur 400.
- Un fois l'ajour effectué, retournez le message suivant en JSON. (
[message]
représente la valeur du paramêtre message)
Intergiciel
À l'aide de l'intergiciel Morgan ajoutez dans un fichier nommé access.log une entrée à chaque fois qu'on accède à une route du serveur. Cette entrée devra afficher la date au format clf, la méthode http, la route, le status de la réponse et le temps de réponse en millisecondes. Le résultat doit être formaté comme ceci:
Consultez les notes de cours sur les intergiciels et la documentation de Mogan pour vous aider.