Application utilisée dans le cadre du cours de LOG210 et développée avec Node, Express et TypeScript.
Ce système doit être utilisé pour obtenir l'information de base pour la réalisation de votre laboratoire en LOG210. Il possède les qualités suivantes:
- il est simple pour les débutants en LOG210
- il n'y a pas de cadriciel pour le front-end ni pour la persistance, mais ça n'empêche pas d'ajouter ces dimensions.
- il est seulement REST niveau 2, mais ça n'empêche pas de modifier l'API pour qu'il soit REST niveau 3.
- il est orienté objet (avec TypeScript)
- il contient des tests pour l'API (avec Jest)
- il fait une séparation entre les couches présentation et domaine, selon la méthodologie de conception du cours LOG210 (Larman)
- Installer Node.js 20 ou supérieur
- (Créer une fork et) Cloner
- Installer les dépendances Node -
npm install
- Compiler les sources et lancer le serveur de développement -
npm start
- Lancer les tests (pas besoin de lancer le serveur d'abord) -
npm run test
- Lancer les tests en mode TDD -
npm run watch
- Lancer un seul test -
npm run test -- -g "nom ou partie du nom d'un test"
Voir https://medium.com/@RupaniChirag/writing-unit-tests-in-typescript-d4719b8a0a40
La documentation de l'API a été générée avec apidoc.
Pour générer et consulter la documentation localement (par exemple, dans un clone), exécuter npm run all_docs
, puis npm start
. Ouvrir l'URL affichée dans la console.
Pour interagir avec l'API du SGB dans votre application, installer la bibliothèque suivante dans votre projet - npm install node-fetch
Puis, importer la bibliothèque dans le fichier .ts
concerné :
import fetch from 'node-fetch';
Exemple avec une requête GET
:
fetch("http://localhost:3200/api/v3/student/all")
.then(async response =>
{
var data = await response.json();
console.log(data);
})
.catch(error => console.error("Error: ", error));
Exemple avec une requête POST
:
var params = {
student_id: "first_name.last_name%2B1%40gmail.com",
group_id: "S20213-LOG210-01",
type: "Devoir1",
type_id: 2,
grade: 75.1
};
fetch("http://localhost:3200/api/v3/grade/insert",
{
method: "post",
body: JSON.stringify(params),
headers: {"Content-Type": "application/json"}
}).then(async response =>
{
var data = await response.json();
console.log(data);
});