Middleware Request ID
Le middleware Request ID génère un identifiant unique pour chaque requête, que vous pouvez utiliser dans vos gestionnaires.
Information
Node.js : Ce middleware utilise crypto.randomUUID() pour générer les identifiants. La variable globale crypto a été introduite dans Node.js à partir de la version 20. Des erreurs peuvent donc survenir avec des versions antérieures. Dans ce cas, spécifiez generator. Toutefois, si vous utilisez l’adaptateur Node.js, il définit automatiquement crypto globalement ; cette configuration n’est donc pas nécessaire.
Importation
import { Hono } from 'hono'
import { requestId } from 'hono/request-id'Utilisation
Vous pouvez accéder à l’identifiant de requête via la variable requestId dans les gestionnaires et les middlewares auxquels le middleware Request ID est appliqué.
const app = new Hono()
app.use('*', requestId())
app.get('/', (c) => {
return c.text(`Your request id is ${c.get('requestId')}`)
})Pour spécifier explicitement le type, importez RequestIdVariables et passez-le dans les paramètres génériques de new Hono().
import type { RequestIdVariables } from 'hono/request-id'
const app = new Hono<{
Variables: RequestIdVariables
}>()Définir l’identifiant de requête
Si vous définissez un identifiant de requête personnalisé dans l’en-tête, par défaut X-Request-Id, le middleware utilise cette valeur au lieu d’en générer une nouvelle :
const app = new Hono()
app.use('*', requestId())
app.get('/', (c) => {
return c.text(`${c.get('requestId')}`)
})
const res = await app.request('/', {
headers: {
'X-Request-Id': 'your-custom-id',
},
})
console.log(await res.text()) // your-custom-idPour désactiver cette fonctionnalité, définissez l’option headerName sur une chaîne vide.
Options
facultatif limitLength: number
La longueur maximale de l’identifiant de requête. La valeur par défaut est 255.
facultatif headerName: string
Le nom de l’en-tête utilisé pour l’identifiant de requête. La valeur par défaut est X-Request-Id.
facultatif generator: (c: Context) => string
La fonction de génération de l’identifiant de requête. Par défaut, elle utilise crypto.randomUUID().
Identifiants de requête propres aux plateformes
Certaines plateformes, comme AWS Lambda, génèrent déjà leurs propres identifiants pour chaque requête. Sans configuration supplémentaire, ce middleware n’a pas connaissance de ces identifiants propres à la plateforme et génère un nouvel identifiant. Cela peut créer de la confusion à la lecture des journaux de votre application.
Pour unifier ces identifiants, utilisez la fonction generator afin de récupérer l’identifiant propre à la plateforme et de l’utiliser dans ce middleware.