# API REST express/node js

Documentation de l'api rest

<span>Avoir installé npm sur son poste avec ce lien </span>[https://nodejs.org/fr/download](https://nodejs.org/fr/download)  
<span>installer pnpm avec 'npm i -g pnpm' </span>

lancer le serveur de l'api avec la commande presente dans le package.json a la racine du projet

exemple : 'pnpm start' pour l'api E-CARE cleaning

# E-CARE API CLEANING

### Processus de création d'une route -&gt; controller -&gt; service 

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/ws15qxu7BOFMBOmL-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/ws15qxu7BOFMBOmL-image.png)

### 1)Créer le controller

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/MLvtHCzHRt3IswD6-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/MLvtHCzHRt3IswD6-image.png)

un controller contient tout ce qui est en rapport avec les requetes/responses, c'est ici qu'on fait le try catch et qu'on renseigne par exemple le pool ( db ) etc .

on oublie pas de le rendre exportable avec le "export" const , et ensuite on crée nos methodes.

On peut le faire de plusieurs façons comme vu ici

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/hDw0XMdTJrlIYDGy-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/hDw0XMdTJrlIYDGy-image.png)

trois méthodes differentes qui font la meme chose , question de préference.

donc dans le controller on appelle le service clientService.\[la methode qu'on veut\] (\[le parametre que la methode attends\]).

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/WWSzz45nszntEkaL-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/WWSzz45nszntEkaL-image.png)

### 2)Créer le service

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/ImC7y2kGJYabKpaa-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/ImC7y2kGJYabKpaa-image.png)

dans le service on met tout ce qui est appel en db, et on retourne le resultat, le controller ce charge de la gestion d'erreur etc .

On fait toujours comme ca :

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/OkpsJuifMtbz22zl-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/OkpsJuifMtbz22zl-image.png)

const \[nom \] = await (pour l'asynchrone) pool(parametre qu'on a typé).request().query(`\[notre requete\]`);

et on return le resultat

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/hNuhPmxBcIojDyWG-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/hNuhPmxBcIojDyWG-image.png)

### 3)Créer la route

dans src/router/config.routes.ts on peut voir un tableau de routes, on duplique une des lignes et on change les valeurs par la route qu'on veut , url = \[route de base\], handler = \[le router qui va gerer les routes\]

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/Yn5IcByxazkt0Oz5-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/Yn5IcByxazkt0Oz5-image.png)

ensuite dans router/handlers on crée un handler, \[le nom qu'on veut\].handler.ts

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/G0WwXeVKZIoFi4Fe-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/G0WwXeVKZIoFi4Fe-image.png)

[![image.png](https://documentation.aswpro.com/uploads/images/gallery/2026-04/scaled-1680-/7OnwMSaqXXSJ9eSG-image.png)](https://documentation.aswpro.com/uploads/images/gallery/2026-04/7OnwMSaqXXSJ9eSG-image.png)

Dans ce handler, on crée notre export const \[nom du handler\] = Router() (crée une instance du router d'express.JS)

puis on appelle ce router fraichement crée pour lui definir ses endpoints , ici on voit .get , ca crée donc la route /api/clients/ , en method GET , qui executera le code du controller qu'on mettra en second parametre ( ici clientController.all )

avec tout ca , on a crée notre route d'api /api/clients qui execute la methode all du controller .

Pour tester on peut soit faire la route 'http://localhost:8000/api/clients' en get sur postman , ou simplement aller sur une page internet et mettre cette url dans la barre de recherche.

# Créer une route

Pour creer une route il faut aller dans src/router/routes/routes.config.ts et y ajouter sa route dans le tableau de routes. Une route attends 3 paramètres:

L'url en string, Le Booleen "isProtected" qui définit si la route est accessible hors connexion ou non , et le router qui lui est associé.

Le paramétré "url" définit la route de base du router associé , donc par exemple si on met "/api/test" dans url et le router "testRouter" dans le handler; toutes les routes du router commenceront par "/api/test"

![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/4S5Fj9DBbwoqumOP-embedded-image-miul2zlp.png)

<span class="EOP"> </span>

une fois que c'est fait , il faut aller créer le router associé , on va utiliser le "DemoRouter" pour cet exemple.

<span class="EOP"> </span>

dans le fichier "src/router/routes" on crée un ficher ts qu'on appelle route.\[le nom du router\].ts

![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/ZWRAQSE6hFixnLO9-embedded-image-zxwu9xjo.png)

ensuite on crée une instance de Router qui est importé depuis "express"

puis , on définit les routes du router, donc comme on a dit avant toutes les routes du demoRouter on par défaut le prefix "/api/demo", donc il nous suffit de lui mettre l'endpoint qu'on veut précédé de la méthode de la route.

<span class="EOP"> </span>

dans notre cas ici on a une get et une post , suivi du controlleur, et de la méthode qu'on veut utiliser.

L'étape suivante est de créer le controlleur associé comme ci dessous.

![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/fppJvvbjiuMM49JC-embedded-image-y9fx0rih.png)

le controlleur contient la méthode qui permet d'aller chercher le service qui communique avec la base de donnée , lui il se charge de faire l'appel du service et de retourner une réponse .

soit une 200 si la requête est acceptée , soit une 500 si il y a un souci, soit une 401 si pas autorisé ... etc , ici on gère uniquement les services.

<span class="EOP"> </span>

on crée ce controlleur dans "src/controller" et on l'importe dans le router.

La dernière étape est de créer le service.

![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/pHzJQfawhnyPyg2X-embedded-image-fr6f2mwd.png)

<span class="EOP"> </span>

Le service ce charge des appel en base de donnée , ici on utilise prisma , mais il est possible de faire du sql ou autres directement .

![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/3KO2G5nK7TrdY5xm-embedded-image-aqdglrag.png)

on crée ce fichier dans "src/services"

pour faire une méthode , il faut suivre une syntaxe claire :

\[nom de la méthode\] : async (\[les paramètres\]) =&gt;{\[La méthode\]}

Donc une fois que tout ceci est fait , la route devrais être accessible .

Le process est le suivant :

Route-&gt;Router-&gt;Controlleur-&gt;Service-&gt;Appel db

# Tester sa route avec postman

Pour tester la route sur postman il y a 2 étapes a faire :

1: ![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/xJaT0etipn2D96y9-embedded-image-6x2rw4mm.png)

il faut generer le compte-token en faisant un appel sur cette route

"http://localhost:8000/api/auth/create-token"\*

copier le token qui sera généré.

<span class="EOP"> </span>

2: ![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/r1NRl8T70NHUprpp-embedded-image-jalcxbud.png)

Aller sur la route "http://localhost:8000/api/auth/login"

passer les identifiants d'un utilisateur sur la db , en metant le token copié precedement dans un header "x-compte-token" : "token copié"

  
ca generera un autre token qu'il faudra copier a son tour et coller dans le champs

"bearer token" de l'auth type postman.

![](https://documentation.aswpro.com/uploads/images/gallery/2026-04/W6NSwvuTR6oh3VjB-embedded-image-xsab5ivp.png)

<span class="EOP"> </span>

cette manipulation est a faire une fois , puis il faut simplement copié le token utilisateur généré au login dans chaque requete sur une route protégéé comme on a vu précédemment.