Aller au contenu

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 ​

ts
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é.

ts
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().

ts
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 :

ts
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-id

Pour 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.

Publié sous licence MIT.