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 (承诺) 对象,其 resolve 的值为 ArrayBuffer
格式的哈希值。