Développer une API Rest avec NodeJS, Express et MongoDB: #1 Configuration du projet
Tags: node, mongodb, express, api
Published: 2022-09-11 12:43:53

---
title: Développer une API Rest avec NodeJS, Express et MongoDB: #1 Configuration du projet
published: true
description:  Nous allons ensemble développer une API Rest en utilisant NodeJS avec la librarie ExpressJS pour nous faciliter la vie.  Le tout sera connecté à une base de donnée MongoDB avec l'utilisation de la librarie mongoose.
tags: node, mongodb, express, api
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
---

## Configuration de ma machine
Trucs à installer avant de démarrer 
- Node **LTS** (ce qui va automatiquement nous installer `npm`)  [Node.js](https://nodejs.org/en/)
- Visual Studio Code https://code.visualstudio.com
- Postman [Download Postman | Get Started for Free](https://www.postman.com/downloads/)
- (Utilisateurs Windows)
	- Gitbash [Git for Windows](https://gitforwindows.org)

### Vérification des installations
J’ouvre mon terminal.
En tant qu'utilisateur Windows, j'ouvre **GitBash**. J’arrête d’utiliser le Shell de windows ou l’outil de commande integré et je lance.
``` bash
node --version
# v16.17.0
npm --version
# 8.15.0
git --version
# git version 2.32.1 ou 3
```


## Initialisation de mon projet
### Mon dossier de travail
- J’ouvre mon terminal (GitBash si je suis sur Windows. Terminal, iTerm2 si je suis sur Mac…etc…)
- Je crée un nouveau dossier, il faut que je sache facilement le retrouver

```bash
mkdir blitz-node
cd blitz-node
```

### J’initialise mon projet code
```bash
# 1. Je m'assure que je suis dans le bon dossier
pwd
# /Users/sidali/Development/clones/blitz-express

# 2. J'initialise un projet Node
npm init -y
```

Je peux ouvrir  mon **Visual Studio Code**




![J'ouvre mon projet sous Visual Studio Code 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sopyy2m7bx7om4zaq4pr.png)
![J'ouvre mon projet sous Visual Studio Code 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pjabitkjroy83u657jxc.png)





Je fais attention à bien ouvrir mon dossier dont le nom est `blitz-node`, pas le dossier le contenant, ni celui d’avant, mais le dossier exact: `blitz-node`

Si j’ai fait les choses correctement, je devrait voir un fichier `package.json`.

**Rappel**: Je n’hésite pas à interrompre le professeur dire quand quelque chose ne fonctionne pas comme prévu. Il se fera plaisir de m’aider 🙂



### J’installe ce dont j’ai besoin

```bash
npm i express mongoose nodemon dotenv
```
#### Explications
##### express
Framework de développement Node, permet de faire facilement les chose que fait Node aussi mais en moins compliqué.

##### mongoose
Nous permet de me connecter et d’interagir avec une base de donnée **MongoDB**

##### nodemon
Simplifie le développement en rechargeant mon serveur automatiquement lors de changement niveau code.
Ça va plus vite que quand j’éteint et rallume le serveur manuellement à chaque fois que je fais un changement.

##### dotenv 
Me permets d’ajouter des variables d’environnement, mon code ne doit pas faire les memes chose en développement vs en prod.

Par exemple, je me connecte au serveur de Spotify de **test** pour récupérer des musiques. 
Mais en **production** je me connecte à leur serveur de prod, plus rapide et plus sécurisé.

### .gitignore
Afin d’éviter que je pollue mon repo **Git**, je crée un fichier à la racine du projet: `.gitignore` et je copie le code suivant:

```bash
node_modules/
```

Ce fichier permettra à **Git** d’ignorer ce que je spécifie dedans. Dont le dossier **node_modules** qui va contenir tous les modules installés localement. 
Il ne faut pas les partager mais seulement partager le fichier `package.json` et `package-lock.json` car ce sont eux qui permettront à mes collègues de pouvoir faire un simple:
```bash
npm install
```
Et récupérer toutes les dépendances qui permettront de lancer le projet.

On est prets pour la suite!

[Partie #2 Mon premier serveur](https://dev.to/lesid3li/developper-une-api-rest-avec-nodejs-express-et-mongodb-2-mon-premier-serveur-nodeexpress-27b2?preview=31779055488356ac3ad06cca2ae416881732325663f0459fc2d86155a4b6331e8f7dcde91dfb293d08c4c049f4b43394664918f5310de492102f9c65)