API REST développée avec Express.js et TypeScript pour la justification de texte avec authentification par token.
Cette API permet de :
- Générer un token d'authentification unique par email
- Justifier un texte selon des règles spécifiques (80 caractères par ligne)
- Node.js (version 14 ou supérieure)
- npm ou yarn
- Cloner le projet (ou naviguer vers le répertoire)
cd TicTacTrip_test- Installer les dépendances
npm install- Dépendances TypeScript
npm init -y
npm i express
npm i -D typescript ts-node-dev @types/express @types/node
npx tsc --init
Le projet utilise TypeScript. La configuration se trouve dans tsconfig.json.
npm run devLe serveur démarre sur http://localhost:3000
Route de base pour vérifier que l'API fonctionne.
Réponse :
Hello from API 👋
Génère et retourne un token d'authentification unique.
Body requis :
{
"email": "user@example.com"
}Commande pour génrer un token :
Invoke-RestMethod -Method Post -Uri http://localhost:3000/api/token -ContentType "application/json" -Body '{"email":"user@example.com"}'Réponse en cas de succès (200) :
{
"token": "token"
}Ou token est une chaîne de caractère
Réponse en cas d'erreur (400) :
{
"error": "email is required"
}Justifie un texte avec une largeur maximale de 80 caractères par ligne.
Headers requis :
Authorization: Bearer <votre_token>
Content-Type: text/plain
Body : Texte brut à justifier
Réponse en cas de succès (200) : Texte justifié avec des lignes de 80 caractères maximum
Réponse en cas d'erreur (401) :
{
"error": "Unauthorized"
}Réponse en cas de dépassement de limite (402) :
{
"error": "Payment Required - Word limit exceeded"
}Le système implémente les fonctionnalités suivantes pour la gestion des tokens :
- Génération de token : Création d'un token unique hexadécimal pour chaque email
- Validation de token : Vérification de l'existence d'un token
- Rate Limiting : Limite de 80,000 mots par token par jour
- Comptage de mots : Suivi du nombre de mots traités par token
Le système de justification implémente :
- Comptage de mots : Fonction pour compter le nombre de mots dans un texte
- Justification : Formatage du texte avec :
- Maximum de 80 caractères par ligne
- Découpage intelligent des mots
- Préservation de l'intégrité des mots
- Gestion des espaces entre les mots
- Express.js : Framework web pour Node.js
- TypeScript : Sur-ensemble de JavaScript typé
- tsx : Outil pour exécuter TypeScript directement
- ts-node-dev : Outil de développement pour TypeScript
- node:crypto : Module pour la génération de tokens sécurisés
AzraKayn/Axel