Method Override 中间件
这个中间件根据 form、header 或 query 中的值,执行指定方法的处理程序 (handler),该方法与请求的实际方法不同,并返回其响应。
导入
ts
import { Hono } from 'hono'
import { methodOverride } from 'hono/method-override'
用法
ts
const app = new Hono()
// 如果没有指定选项,则使用 form 中 `_method` 的值,
// 例如 DELETE,作为方法。
app.use('/posts', methodOverride({ app }))
app.delete('/posts', (c) => {
// ....
})
例如
由于 HTML 表单无法发送 DELETE 方法,你可以将值 DELETE
放在名为 _method
的属性中并发送它。这样就会执行 app.delete()
的处理程序 (handler)。
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', () => {
// ...
})
你可以更改默认值,或者使用 header 值和 query 值:
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' }))
选项
required app: Hono
你的应用中使用的 Hono
实例。
optional form: string
包含方法名称值的 Form 键。 默认值为 _method
。
optional header: boolean
包含方法名称值的 Header 名称。
optional query: boolean
包含方法名称值的 Query 参数键。 默认值为 _method
。