- Cloner ou télécharger le projet
- lance la commande
npm install
- Éditer le fichier
.env
- lancer la commande
npm start
Vous pouvez mettre chacun de ces exercices dans le fichier
src/index.js
. Chaque exercices peut-être testé avec le fichier
request.http
:)
N'hésitez pas à demander de l'aide au formateur !
Créer une route GET /hello-world
qui retourne la chaîne de
caractère "bonjour tout le monde" !
Créer une route GET /hello/:name
qui accépte un paramètre
name et affiche la chaine de caractère suivante :
Bonjour ${name}
.
Créer une route GET /additionner/:x/:y
qui accépte 2 paramètres
et retourne le résultat de l'addition des 2 chiffres.
Créer une route GET /calculer/:x/:y
qui accépte 2 paramètres
de routes, ainsi qu'un en-tête HTTP "Operation" qui peut être
égale à "additionner", "soustraire", "multiplier".
Lorsque l'en-tête http est égale a:
- additioner: Additionner les 2 nombres
- soustraire: Soustraire les 2 nombres
- multiplier: Multiplier les 2 nombres
Si l'en-tête HTTP "Operation" n'est pas présent retourner une réponse avec le code "404" et la chaine de caractère "Veuillez préciser une opération"
Avec le tableaux suivant:
const names = [
'john',
'jack',
'jane',
'jerome',
'jean',
'jule',
'justine',
'juliette',
'jeremy',
]
Créer une méthode GET /personnes
qui retourne le tableaux
de nom.
Ajouter aussi une query string nom=ju
, si la query est présente alors
retourner uniquement les noms contenant "ju"
Toujours dans le fichier src/index.js
, ajouter les
exercices les uns à la suite des autres. Vous pouvez tester
chaques exercices graçe au fichier request.http
.
Créer une route GET /books
. Cette route doit retourner
tout les documents de la collection books
Créer une route GET /books/:id
. Cette route doit retourne
le document avec l'identifiant donné.
Créer un route POST /books
qui accépte le body suivant:
{
"title": "Super titre",
"description": "Superbe description"
}
On enregistre dans la base de données le contenu du body. Et récupérer le document tout juste inséré dans la base de données et le retourner.
Créer un route PATCH /books/:id
qui accépte le body suivant:
{
"title": "Super titre modifier"
}
On modifie le livre avec le body de requête. Et récupérer le document tout juste modifié dans la base de données et le retourner.
Créer un route DELETE /books/:id
.
On supprime le livre dans la base de donnée. Retourner le livre tout juste supprimer.
Pour faire ces exercices, tout d'abord installer fluent-json-schema
.
Ensuite créer un fichier src/schemas/book-schemas.js
et placez tout vos schèmas à l'intérieur.
Définir le schéma suivant pour la route POST /books
:
champ | type |
---|---|
title | string |
description | string |
price | number |
champ | type |
---|---|
_id | string |
+tout les champs plus haut |
Définir le schéma suivant pour la route GET /books
:
Un tableaux de book
définie plus haut
Définir le schéma suivant pour la route PATCH /books/:id
:
champ | type |
---|---|
même que le POST mais non requis |
Le book définie plus haut
Définir le schèma suivant pour la route DELETE /books/:id
:
Un book
définie plus haut
Ajouter la possibilité de filter la collection de livres (GET /books
) avec les
filtres suivant :
nom | valeur par défaut |
---|---|
limit | 25 |
page | 1 |
sort | _id |
direction | -1 |
title | NONE |
Il faudra récupérer les critéres de recherche et les envoyé au book model.
Créer une valeur de configuration (variable d'environment) pour la limite par défaut.
Je veux récupérer les commentaires du pantalon n°10 (Collection)
GET https://super-vetement.api.io/pantalons/10/commentaires (Collection / Document ?) (OK: Collection)
/pantalons
/10
/commentaires
GET https://super-vetement.api.io/commentaires?pantalon=10
/commentaires (Collection)
Je veux récupérer l'autheur du livre n°10 (Document)
GET https://super-livre.api.io/auteurs?livre=10 (Pas OK)
/auteurs (Collection)
GET https://super-livre.api.io/auteurs/livres?id=10 (Pas Ok)
/auteurs (Collection)
/livres (Collection)
GET https://super-livre.api.io/livres?id=10&auteur (Pas OK)
/livres (Collection)
GET https://super-livre.api.io/auteur/livre/10 (Pas OK)
/auteur
/livre
/10
GET https://super-livre.api.io/livres/10?auteur (Pas Ok)
/livres (Collection)
/10 (Document)
GET https://super-livre.api.io/livres/10/auteur (OK)
/livres (Collection)
/10 (Document)
/auteur (Document)
Je veux ajouter un commentaire sur le pantalons n°5
POST https://super-vetement.api.io/commentaires/pantalons/5 (Pas OK)
/commentaires (Collection)
/pantalons (Collection)
/5
POST https://super-vetement.api.io/pantalons/5/commentaires (OK)
/pantalons (Collection)
/5 (Document)
/commentaires (Collection)
PATCH https://super-vetement.api.io/pantalons/5 (OK)
Faire une api de liste de chose à faire.
Recomendation:
- Créer une nouvelle application
- Vous trouverez tout les librairies que nous avons utilisé lors de la formation dans la section "dependencies" du fichier package.json
Graçe à la resource : POST /todos
, pouvoir ajouter un todo
avec les champs suivant :
label: string
checked: boolean
Graçe à la resource : GET /todos
, pouvoir lister
les todos. Mettre en place les filtres suivant
limit: number
page: number
checked: boolean
label: string
Graçe à PATCH /todos/:id
et DELETE /todos/:id
pouvoir
mettre à jour et supprimer un todo.
Graçe à POST /users
, pouvoir créer un utilisateur avec
les champs suivant :
email: string
password: string
Attention, le mot de passe doit être crypté en base de donnée !
Graçe à POST /token
, pouvoir générer un token
JWT. (installer fastify-jwt
et utilisé app.jwt.sign
)
Faire en sorte que toutes les routes concernant les todos soit accesible uniquement aux utilisateur connécté via un token.