Sfoglia il codice sorgente

ajout readme + sujet TP1

Pierre Kraemer 5 anni fa
parent
commit
f1a3f0c4d0
2 ha cambiato i file con 75 aggiunte e 1 eliminazioni
  1. 39 1
      README.md
  2. 36 0
      TP1.md

+ 39 - 1
README.md

@@ -1,2 +1,40 @@
-# W4ab
+# W4b - Compléments de programmation web côté serveur / client
+Bienvenue dans ce module de programmation web :-)
 
+Vous trouverez dans ce dépôt les ressources nécessaires pour la réalisation des TP.
+
+## Tuto Git
+
+En premier lieu, faites un **fork** de ce dépôt de sorte à en avoir une copie à vous dans laquelle vous pourrez ajouter vos réalisations.
+Une fois ce **fork** réalisé, changez son niveau de visibilité en "Privé" puis partagez-le avec votre enseignant en allant dans la section "Members" de votre dépôt et en l'ajoutant en tant que "Reporter".
+
+---
+
+Vous pouvez maintenant **cloner** votre dépôt sur votre machine de travail afin de disposer d'un espace de travail local.
+Pour pouvoir interagir avec le serveur Gitlab depuis votre machine de travail, il faut ajouter la clé ssh de votre machine à votre profil utilisateur.
+Toutes les informations nécessaires se trouvent dans la section "SSH keys" de votre profil.
+
+Une fois cela fait, vous pouvez **cloner** votre dépôt :
+```sh
+git clone git@git.unistra.fr:[votre login]/w4ab.git
+```
+Vous vous retrouvez alors devant un dossier w4ab qui contient une copie locale de votre dépôt.
+
+---
+
+De nouvelles ressources seront ajoutés au fur et à mesure par les enseignants sur le dépôt de référence depuis lequel vous avez forké votre dépôt.
+De manière à pouvoir les récupérer, vous pouvez ajouter une nouvelle remote à la configuration de votre dépôt local :
+```sh
+git remote add upstream git@git.unistra.fr:W4a/w4ab.git
+```
+*upstream* est le nom que l'on choisit ici de donner à cette nouvelle **remote** (on aurait pu choisir un autre nom).
+C'est en général comme cela que l'on appelle le dépôt de référence depuis lequel on a forké son dépôt.
+Vous pouvez constater qu'il a bien été ajouté en exécutant cette commande (qui liste les remotes connues) :
+```sh
+git remote -v
+```
+Pour récupérer les commits ajoutés par vos enseignants sur le dépôt de référence, vous pouvez dorénavant faire :
+```sh
+git pull upstream master
+```
+*master* est ici le nom de la **branche** dans laquelle vous travaillez, mais cela, c'est une autre histoire dont on n'a pas forcément besoin pour le moment..

+ 36 - 0
TP1.md

@@ -0,0 +1,36 @@
+# Introduction
+
+On va écrire une application Node.js qui expose des routes HTTP qui vont permettre gérer des entités stockées en base de données.
+
+En premier lieu, initialiser un nouveau fichier `package.json` grâce à la commande `npm init`.
+
+Installer les dépendances (et enregistrer l'information dans le package.json au passage) :
+```sh
+npm install --save express body-parser sequelize mysql2
+```
+
+`express` permet de créer un serveur HTTP, `body-parser` de récupérer les données transmises par le client avec une requête et `sequelize` est la bibliothèque qui va nous servir à gérer le lien avec la BDD. C'est ce qu'on appelle un ORM (Object Relational Mapper). Sa documentation est accessible à l'adresse : https://sequelize.org/v5/
+Vous pouvez notamment commencer par consulter la section [Getting started](https://sequelize.org/v5/manual/getting-started.html).
+
+# Exercices
+
+- Créer une base de données "W4a"
+
+- Ecrire une application Node.js qui :
+    - crée un objet `sequelize` connecté à votre base "W4a"
+    - définit une entité Sequelize (modèle) `Person` ayant des champs `firstname` et `lastname`
+    - synchronise la base avec l'entité définie
+    - crée un serveur HTTP `express`
+    - enregistre les routes HTTP suivantes :
+        - `GET /person` : renvoie l'ensemble des personnes sous la forme d'un tableau d'objets en JSON
+        - `POST /person` : ajoute une nouvelle entité `Person` en base à partir des données fournies avec la requête en JSON
+        - `GET /person/:person_id` : renvoie la personne d'identifiant `person_id` sous la forme d'un objet en JSON
+        - `PUT /person/:person_id` : modifie la personne d'identifiant `person_id` à partir des données fournies en JSON
+        - `DELETE /person/:person_id` : supprime la personne d'identifiant `person_id`
+    - ajoute un middleware de gestion d'erreur qui reçoit un objet contenant le statut et le texte de la réponse d'erreur à renvoyer
+	- lance l'écoute du serveur HTTP sur un port choisi
+
+L'ensemble des fonctions qui font appel à l'entité Sequelize `Person` et dont l'appel sera associé aux différentes routes enregistrées seront définies au sein d'un objet `personCtrl`.
+On écrira les fonctions `get_all, create, get_by_id, update_by_id, delete_by_id`.
+
+L'ensemble de ces routes seront testées grâce à l'outil Postman.