Vous avez 4 séances de TD/TP pour produire un site web qui permettent de répondre à des questions et donne le score.
L'ensemble des 4 TD/TP sont à réaliser sur Gitpod. Vous devez réutiliser le compte que vous avez crée durant la première séance.
Comme au premier TP, vous devez suivre le même processus que pour contribuer à un projet:
- Dupliquer (Forker) le projet github
- Modifier / compléter des fichier du repo. forké
- Commiter vos modifs sur votre repo.
- Proposer vos modifications sur le repo. parent (PullRequest)
L'architecture générale de l'application Burger Quizz est la suivante :
Une application web consomme une API Rest Quarkus qui s'appuie sur une base de données relationnelles en mémoire H2.
La stack technique a été choisie durant le TD/TP1 : Quarkus.
Votre client veut une api de quizz en français qui :
- Liste des questions
- Liste des propositions d'une question
- Evalue les réponses
L'objectif de ce second TP est de produire une API Rest Quarkus qui réponde à ce besoin tout en appliquant un maximum de bonnes pratiques d'éco-conception. Vous partez d'un socle existant qu'il faut améliorer.
L'objectif est de créer une copie du projet 'miage-numres-step2a' sur votre compte github.
- Se rendre sur le projet github [miage-numres-step2a] (https://github.com/aepsilon-tek/miage-numres-step2a)
- Fork du projet grâce au bouton Fork
Pour utiliser GitPod avec votre projet forké, il suffit d'ouvrir l'url suivant dans votre navigateur : https://gitpod.io/# + URL_REPO_GITHUB
Avec un repo https://github.com/miage3-ae/miage-numres-step2a alors l'url est : https://gitpod.io/#https://github.com/miage3-ae/miage-numres-step2a
- Lancer application
quarkus
en mode développement dans un Terminal - Tester dans un second Terminal que l'api répond :
curl -w "\n" http://localhost:8080/quizz/questions
- Modifier la valeur de la propriété
quarkus.rest-client.translate-client-api.url
dans le fichier application.properties - ReTester
- Tester la recupération des propositions d'une question :
curl -w "\n" http://localhost:8080/quizz/questions/1/proposals
- Tester l'evaluation des reponses :
curl -w "\n" http://localhost:8080/quizz/proposals/evaluate -H 'accept: application/json' -H 'content-type: application/json; charset=UTF-8' --data-raw '[{"id":1},{"id":2}]'
- Répondre aux questions Q1,Q2 et Q3 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
- Construire l'application en mode JVM
- Lancer l'applicatif construit :
java -jar target/quarkus-app/quarkus-run.jar
- Mesure la mémoire consommée :
ps -e -o pid,rss,args | grep quarkus-run
- Tester les méthodes de l'api
- Liste des questions :
curl -w "\nTime: %{time_total}s\nSize: %{size_download} bytes\n" http://localhost:8080/quizz/questions
- Liste des propositions :
curl -w "\nTime: %{time_total}s\nSize: %{size_download} bytes\n" http://localhost:8080/quizz/questions/1/proposals
- Evaluation des réponses :
curl -w "\nTime: %{time_total}s\nSize: %{size_download} bytes\n" http://localhost:8080/quizz/proposals/evaluate -H 'accept: application/json' -H 'content-type: application/json; charset=UTF-8' --data-raw '[{"id":1},{"id":2}]'
- Liste des questions :
- Répondre aux questions Q4,Q5,Q6 et Q7 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
- Construire l'application en mode Natif
- Lancer l'applicatif construit :
./target/api-quarkus-1.0.0-SNAPSHOT-runner
- Répondre aux questions Q8 à Q11 du fichier Questions.md
- Commiter & Pusher le fichier Questions.md
Vous devez désormais regarder / analyser / critiquer / améliorer le code existant en appliquant les bonnes pratiques d'éco-conception. Pour faire vos tests, vous pouvez lancer l'application en mode ** dev **. Le log des requêtes SQL est activé.
Pour chacune des propositions que vous faites, vous devez :
- Decrire la proposition dans le fichier Questions.md
- Implementer votre proposition
- Tester la proposition
- Mesurer et tracer les mesures dans le fichier Questions.md
- Commiter & Pusher le code et le fichier Questions.md
Suivez les étapes ci-desus et répondre à Q12 du fichier fichier Questions.md
Suivez les étapes ci-desus et répondre à Q13 du fichier fichier Questions.md
Suivez les étapes ci-desus et répondre à Q14 du fichier fichier Questions.md
Suivez les étapes ci-desus et répondre à Q15 du fichier fichier Questions.md
Une fois tous vos commits & Push réalisés sur votre repo, il est nécessaire de faire la Pull Request sur le repo parent. Pour cela, il suffit de :
- Se rendre sur votre compte personnel sur
GitHub
. - Sur la page principale, se rendre sur
Contribute
>Open pull Request
- Remplir le titre de la pull request en précisant votre nom (vos noms) et
Create pull request
Lire & suivre les instructions du fichier README de https://github.com/aepsilon-tek/miage-numres-step2b
./mvnw clean compile
: Compilation du projet./mvnw quarkus:dev
: Lancement du projet en mode developpement./mvnw clean package
: Construction du projet en mode JVM./mvnw clean package -P native
: Construction du projet en mode Natif