跳转到正文

ETag 中间件 ​

使用此中间件可以轻松添加 ETag 响应头。

导入 ​

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

用法 ​

ts
const app = new Hono()

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

保留的响应头 ​

304 响应必须包含等效 200 OK 响应中会发送的相应头部。默认保留 Cache-Control、Content-Location、Date、ETag、Expires 和 Vary。

要添加发送的头部,可以使用 retainedHeaders 选项,以及包含默认头部的字符串数组变量 RETAINED_304_HEADERS:

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

// ...

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

选项 ​

optional weak: boolean ​

指定是否使用弱验证。设为 true 时,值会添加 w/ 前缀。默认值为 false。

optional retainedHeaders: string[] ​

希望在 304 响应中保留的头部。

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

自定义摘要生成函数。默认使用 SHA-1。调用时会以 Uint8Array 形式传入响应体,函数应返回作为 ArrayBuffer 的哈希值,或返回解析为该值的 Promise。

基于 MIT 许可证发布。