메서드 오버라이드 미들웨어
이 미들웨어는 폼, 헤더, 쿼리의 값에 따라 실제 요청 메서드와 다른 지정된 메서드의 핸들러를 실행하고 그 응답을 반환한다.
임포트
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
메서드 이름을 포함한 값이 있는 쿼리 파라미터 키.