Zum Inhalt springen

Method-Override-Middleware ​

Diese Middleware führt anhand eines Formular-, Header- oder Query-Werts den Handler einer angegebenen Methode aus, die von der tatsächlichen Anfragemethode abweicht, und gibt dessen Antwort zurück.

Import ​

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

Verwendung ​

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) => {
  // ....
})

Beispiel ​

Da HTML-Formulare die Methode DELETE nicht senden können, kannst du den Wert DELETE in einer Eigenschaft namens _method senden. Anschließend wird der Handler für app.delete() ausgeführt.

Das HTML-Formular:

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

Die Anwendung:

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

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

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

Du kannst die Standardwerte ändern oder Header- und Query-Werte verwenden:

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' }))

Optionen ​

required app: Hono ​

Die in deiner Anwendung verwendete Instanz von Hono.

optional form: string ​

Der Formularschlüssel, dessen Wert den Methodennamen enthält. Der Standardwert ist _method.

optional header: boolean ​

Der Header-Name, dessen Wert den Methodennamen enthält.

optional query: boolean ​

Der Query-Parameterschlüssel, dessen Wert den Methodennamen enthält.

Veröffentlicht unter der MIT-Lizenz.