Une API RESTful pour la gestion de stock et des ventes.
- Node.js version
20.xou supérieure - npm version
10.7.xou supérieure ou yarn - PostgreSQL version
14.xou supérieure
git clone git@t-dev.epitest.eu:COT_1/T-DEV-702-Api.git
cd T-DEV-702-Apinpm installCréez un fichier .env à la racine du projet avec les variables suivantes :
APP_NAME="Trinity Api"
APP_PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=yourpassword
DB_NAME=mydatabase
JWT_SECRET=mysecretkey
CSRF_SECRET=mysecretkeynpm run startL'API sera accessible à http://localhost:3000.
Les réponses de l'API suivent un format standard pour assurer la cohérence. Les schémas de réponse sont définis comme suit :
Lorsque l'API retourne un seul objet (ex. un utilisateur), la réponse est structurée comme suit :
Réponse HTTP 200 OK
{
"status_code": 200,
"timestamp": "2024-08-20T12:34:56Z",
"message": "An Human Readable Message",
"data": {
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
}Pour les réponses contenant une liste d'objets (ex. liste des utilisateurs), la structure est :
Réponse HTTP 200 OK
{
"status_code": 200,
"timestamp": "2024-08-20T12:34:56Z",
"message": "An Human Readable Message",
"data": [
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
},
{
"id": 2,
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
]
}Lorsque les données sont paginées, la réponse inclut des informations sur la pagination :
Réponse HTTP 200 OK
{
"status_code": 200,
"timestamp": "2024-08-20T12:34:56Z",
"message": "An Human Readable Message",
"data": {
"items": [
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
},
{
"id": 2,
"name": "Jane Smith",
"email": "jane.smith@example.com"
}
],
"current_page": 1,
"last_page": 5,
"total_items": 50,
"per_page": 10
}
}Les erreurs sont renvoyées avec un format standard qui inclut le code d'état HTTP, un message d'erreur, et éventuellement des détails supplémentaires.
{
"status_code": 404,
"timestamp": "2024-08-20T12:34:56Z",
"message": "Ressource non trouvée",
"error": "Not Found"
}- Lancez les tests unitaires :
npm run test- Lancez les tests d'intégration :
npm run test:integration- Lancez les tests unitaires :
npm run test:coveragesrc/
├── common/ # Modules et utilitaires communs
│ ├── decorators/ # Décorateurs personnalisés
│ ├── dto/ # Objets de transfert de données
│ ├── exceptions/ # Gestion des exceptions
│ ├── filters/ # Filtres globaux pour les erreurs
│ ├── guards/ # Gardes pour la sécurité et l'accès
│ ├── interceptors/ # Intercepteurs pour les réponses et les logs
│ ├── interfaces/ # Interfaces pour les types partagés
│ ├── middleware/ # Middlewares pour les requêtes HTTP
│ ├── pipes/ # Pipes pour la transformation et la validation
│ └── utils/ # Utilitaires généraux
├── config/ # Configuration de l'application
│ ├── configuration.module.ts
│ ├── configuration.service.ts
│ └── configurations/ # Différentes configurations d'environnement
│ ├── development.ts
│ ├── production.ts
│ └── test.ts
├── core/ # Services et modules essentiels
│ ├── logger/ # Service de journalisation
│ ├── database/ # Configuration de la base de données
│ ├── cache/ # Gestion du cache
│ └── core.module.ts
├── features/ # Modules fonctionnels
│ ├── auth/ # Module d'authentification
│ │ ├── dto/ # DTOs pour l'authentification
│ │ ├── entities/ # Entités pour la persistance
│ │ ├── auth.controller.ts
│ │ ├── auth.module.ts
│ │ ├── auth.service.ts
│ ├── users/ # Module utilisateur
│ │ ├── dto/
│ │ ├── entities/
│ │ ├── users.controller.ts
│ │ ├── users.module.ts
│ │ ├── users.service.ts
│ │ └── repositories/
│ └── ... # Autres modules fonctionnels
├── main.ts # Fichier principal pour démarrer l'application
├── app.module.ts # Module racine de l'application
└── test/ # Tests unitaires et d'intégration
├── e2e/ # Tests end-to-end
└── unit/ # Tests unitaires
express: Framework web pour Node.js.typeorm: ORM pour TypeScript et JavaScript (ES7+).jsonwebtoken: Génération et vérification des tokens JWT.jest: Framework de test pour JavaScript.