Skip to content

ETag 미들웨어

이 미들웨어를 사용하면 ETag 헤더를 쉽게 추가할 수 있다.

Import

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 또는 ArrayBuffer를 반환하는 Promise를 반환해야 한다.

Released under the MIT License.