跳至内容

方法覆盖中间件

此中间件根据表单、标头或查询的值,执行指定方法的处理程序,该方法不同于请求的实际方法,并返回其响应。

导入

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

用法

ts
const app = new Hono()

// If no options are specified, the value of `_method` in the form,
// e.g. DELETE, is used as the method.
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 的实例在您的应用程序中使用。

可选 form: string

表单键,其值为包含方法名的字符串。默认值为 _method

可选 header: boolean

标头名称,其值为包含方法名的字符串。

可选 query: boolean

查询参数键,其值为包含方法名的字符串。

根据 MIT 许可证发布。