@aventii/http-utils (1.0.0)
Installation
@aventii:registry=npm install @aventii/http-utils@1.0.0"@aventii/http-utils": "1.0.0"About this package
@aventii/http-utils
Utilitaires HTTP communs aux services Aventii.
Ce package contient des mécanismes génériques liés au traitement des requêtes HTTP. Il est conçu pour être utilisé par plusieurs microservices et plusieurs produits, sans dépendre d'aucune logique métier particulière.
Installation
Le package est distribué sur le registre npm privé Aventii.
npm install @aventii/http-utils
L'accès au registre nécessite une configuration npm Aventii valide.
Utilisation
Normalisation de routes
Le package expose normalizeRoute, qui transforme les segments
variables d'une URL en identifiants stables.
const { normalizeRoute } = require('@aventii/http-utils');
normalizeRoute('/users/0123456789abcdef01234567');
// /users/:id
normalizeRoute('/users/123e4567-e89b-12d3-a456-426614174000');
// /users/:uuid
La normalisation permet notamment d'agréger correctement des métriques par route.
Sans normalisation :
/users/507f1f77bcf86cd799439011
/users/507f191e810c19729de860ea
/users/507f1f77bcf86cd799439012
constituent trois clés différentes.
Après normalisation :
/users/:id
elles appartiennent à la même route logique.
Règles génériques
normalizeRoute applique les transformations communes suivantes :
- suppression de la query string ;
- normalisation des UUID en
:uuid; - normalisation des ObjectId MongoDB en
:id; - normalisation de
/favicon.icoen/favicon.
Une route ne correspondant à aucune règle est retournée sans modification.
Règles spécifiques à un service
Le package expose également createRouteNormalizer.
Il permet à un service de compléter les règles génériques sans
introduire de connaissance métier dans @aventii/http-utils.
const {
createRouteNormalizer
} = require('@aventii/http-utils');
const normalizeRoute = createRouteNormalizer({
rules: [
{
pattern: /^\/documents\/[0-9a-f]{24}\/validate$/,
replacement: '/documents/:id/validate'
}
]
});
Les règles fournies par le consommateur sont appliquées avant les règles génériques.
Cela permet notamment de préserver une sémantique plus précise :
/documents/:id/validate
plutôt qu'une simple normalisation générique de l'identifiant.
API
normalizeRoute(path)
Normalise une route en utilisant uniquement les règles génériques.
Paramètre
path --- chemin HTTP à normaliser.
Retour
Le chemin normalisé. Une valeur non textuelle est retournée sans modification.
createRouteNormalizer(options)
Crée un normaliseur pouvant appliquer des règles supplémentaires.
Options
{
rules: [
{
pattern: RegExp,
replacement: String
}
]
}
Retour
Une fonction normalizeRoute(path) configurée.
Tests
npm test
Les tests du package couvrent :
- les règles génériques ;
- les cas limites ;
- le mécanisme d'extension ;
- l'ordre d'application des règles.
Les règles métier propres aux services restent testées dans les services concernés.
Dependencies
Development Dependencies
| ID | Version |
|---|---|
| jest | ^30.4.2 |