1. Structuer du répertoire du projet
Voici l'arborescence typique du projet Kimi-Free-API :
kimi-free-api/
├── compilation/
├── code_source/
│ ├── parametres/
│ ├── gestionnaires/
│ ├── structures/
│ ├── chemins/
│ ├── traitements/
│ ├── outils/
│ └── demarrage.ts
├── .gitignore
├── paquet.json
├── documentation.md
└── config-ts.json
Explications des répertoires clés :
compilation/: Dossier contenant les fichiers JavaScript générés à partir de TypeScript.code_source/: Contient l'ensemble du code source original.parametres/: Fichiers de configuration de l'application.gestionnaires/: Logique de traitement des requêtes entrantes.structures/: Schémas et modèles de données.chemins/: Définitions des points d'accès (endpoints) de l'API.traitements/: Services métier et logique applicative.outils/: Fonctions utilitaires partagées.demarrage.ts: Point d'entrée principal du serveur.
2. Fichier principal de lancement
L'application est initialisée via code_source/demarrage.ts. Ce fichier orchestre le démarrage du serveur HTTP.
import express from 'express';
import { charger } from './parametres';
import { attacher_chemins } from './chemins';
const parametres = charger();
const serveur = express();
serveur.use(express.json());
attacher_chemins(serveur, '/v1');
serveur.listen(parametres.ecoute, () => {
console.log(`Service API opérationnel sur le port ${parametres.ecoute}`);
});
3. Fichiers de configuration
Les paramètres de l'application sont gérés dans le répertoire code_source/parametres/. On y trouve généralement :
base.json: Configuration par défaut et valeurs communes.prod.json: Paramètres spécifiques à l'environnement de prdouction.dev.json: Paramètres pour le développement local.
Exemple de contenu d'un fichier base.json :
{
"ecoute": 8080,
"stockage": {
"hote": "db.localhost",
"port": 5433,
"nom": "kimi_data"
}
}
Le chargement dynamique de la configuration se fait ainsi :
import configuration from './base.json';
export function charger() {
const port_ecoute = configuration.ecoute;
const infos_stockage = configuration.stockage;
console.log(`Écoute prévue sur : ${port_ecoute}`);
return { ecoute: port_ecoute, stockage: infos_stockage };
}