Skip to content

메서드 오버라이드 미들웨어

이 미들웨어는 폼, 헤더, 쿼리의 값에 따라 실제 요청 메서드와 다른 지정된 메서드의 핸들러를 실행하고 그 응답을 반환한다.

임포트

ts
import { Hono } from 'hono'
import { methodOverride } from 'hono/method-override'

사용 방법

ts
const app = new Hono()

// 옵션을 지정하지 않으면 폼의 `_method` 값(예: DELETE)을 메서드로 사용한다.
app.use('/posts', methodOverride({ app }))

app.delete('/posts', (c) => {
  // ....
})

예시

HTML 폼은 DELETE 메서드를 직접 보낼 수 없기 때문에, _method라는 속성에 DELETE 값을 넣어 전송한다. 그러면 app.delete() 핸들러가 실행된다.

HTML 폼:

html
<form action="/posts" method="POST">
  <input type="hidden" name="_method" value="DELETE" />
  <input type="text" name="id" />
</form>

애플리케이션:

ts
import { methodOverride } from 'hono/method-override'

const app = new Hono()
app.use('/posts', methodOverride({ app }))

app.delete('/posts', () => {
  // ...
})

기본값을 변경하거나 헤더 값과 쿼리 값을 사용할 수도 있다:

ts
app.use('/posts', methodOverride({ app, form: '_custom_name' }))
app.use(
  '/posts',
  methodOverride({ app, header: 'X-METHOD-OVERRIDE' })
)
app.use('/posts', methodOverride({ app, query: '_method' }))

옵션

필수 app: Hono

애플리케이션에서 사용할 Hono 인스턴스를 지정한다.

optional form: string

폼 키의 값으로 메서드 이름을 포함한다. 기본값은 _method이다.

선택 사항 헤더: boolean

메서드 이름을 포함하는 값과 함께 헤더 이름을 지정한다.

optional 쿼리: boolean

메서드 이름을 포함한 값이 있는 쿼리 파라미터 키.

Released under the MIT License.