Aller au contenu

Middleware ETag ​

Ce middleware permet d’ajouter facilement des en-têtes ETag.

Importation ​

ts
import { Hono } from 'hono'
import { etag } from 'hono/etag'

Utilisation ​

ts
const app = new Hono()

app.use('/etag/*', etag())
app.get('/etag/abc', (c) => {
  return c.text('Hono is cool')
})

En-têtes conservés ​

La réponse 304 doit inclure les en-têtes qui auraient été envoyés dans une réponse 200 OK équivalente. Les en-têtes par défaut sont Cache-Control, Content-Location, Date, ETag, Expires et Vary.

Pour ajouter un en-tête à conserver, utilisez l’option retainedHeaders et la variable RETAINED_304_HEADERS, un tableau de chaînes contenant les en-têtes par défaut :

ts
import { etag, RETAINED_304_HEADERS } from 'hono/etag'

// ...

app.use(
  '/etag/*',
  etag({
    retainedHeaders: ['x-message', ...RETAINED_304_HEADERS],
  })
)

Options ​

facultatif weak: boolean ​

Indique s’il faut utiliser une validation faible. Si l’option est définie sur true, le préfixe w/ est ajouté à la valeur. La valeur par défaut est false.

facultatif retainedHeaders: string[] ​

Les en-têtes à conserver dans la réponse 304.

facultatif generateDigest: (body: Uint8Array) => ArrayBuffer | Promise<ArrayBuffer> ​

Une fonction personnalisée de génération d’empreinte. Par défaut, elle utilise SHA-1. Cette fonction reçoit le corps de la réponse sous forme de Uint8Array et doit renvoyer une empreinte sous forme d’ArrayBuffer ou d’une Promise résolvant un tel objet.

Publié sous licence MIT.