Zum Inhalt springen

Request-ID-Middleware ​

Die Request-ID-Middleware erzeugt für jede Anfrage eine eindeutige ID, die du in deinen Handlern verwenden kannst.

Info

Node.js: Diese Middleware verwendet crypto.randomUUID(), um IDs zu erzeugen. Das globale crypto wurde in Node.js ab Version 20 eingeführt. In älteren Versionen können daher Fehler auftreten. Gib in diesem Fall generator an. Wenn du jedoch den Node.js-Adapter verwendest, setzt er crypto automatisch global; dann ist das nicht nötig.

Import ​

ts
import { Hono } from 'hono'
import { requestId } from 'hono/request-id'

Verwendung ​

In Handlern und Middleware-Funktionen, auf die die Request-ID-Middleware angewendet wird, kannst du über die Variable requestId auf die Anfrage-ID zugreifen.

ts
const app = new Hono()

app.use('*', requestId())

app.get('/', (c) => {
  return c.text(`Your request id is ${c.get('requestId')}`)
})

Um den Typ ausdrücklich anzugeben, importiere RequestIdVariables und übergib ihn als generischen Typparameter von new Hono().

ts
import type { RequestIdVariables } from 'hono/request-id'

const app = new Hono<{
  Variables: RequestIdVariables
}>()

Anfrage-ID setzen ​

Wenn du eine eigene Anfrage-ID im Header angibst, standardmäßig X-Request-Id, verwendet die Middleware diesen Wert, statt eine neue ID zu erzeugen:

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

Um diese Funktion zu deaktivieren, setze die Option headerName auf eine leere Zeichenfolge.

Optionen ​

optional limitLength: number ​

Die maximale Länge der Anfrage-ID. Der Standardwert ist 255.

optional headerName: string ​

Der für die Anfrage-ID verwendete Header-Name. Der Standardwert ist X-Request-Id.

optional generator: (c: Context) => string ​

Die Funktion zur Erzeugung der Anfrage-ID. Standardmäßig verwendet sie crypto.randomUUID().

Plattformspezifische Anfrage-IDs ​

Einige Plattformen wie AWS Lambda erzeugen bereits eigene Anfrage-IDs für jede Anfrage. Ohne zusätzliche Konfiguration kennt diese Middleware diese spezifischen IDs nicht und erzeugt eine neue Anfrage-ID. Das kann beim Lesen deiner Anwendungsprotokolle zu Verwirrung führen.

Verwende zum Vereinheitlichen die Funktion generator, um die plattformspezifische Anfrage-ID abzurufen und in dieser Middleware zu verwenden.

Veröffentlicht unter der MIT-Lizenz.