ぺーぺーSEのテックブログ

備忘録用メモサイト

RSSを購読する

Node.js/ExpressでブラウザからPUT/DELETEリクエストを発行する

Node.js/Expressアプリケーションに対してブラウザからPUT/DELETEリクエストを発行する方法について記載する。
通常、ブラウザからPUT/DELETEリクエストは発行できない。
ここで紹介する方法も実際にブラウザからPUT/DELETEリクエストを発行しているのではなく、 Node.js/Express側でPUT/DELETEリクエストとして解釈 しているだけ。

以下の記事を読んだ前提で書く。

環境設定

先の記事で紹介したプロジェクトにて以下を実行する。

1
$ yarn add method-override

実装

先の記事で紹介したプロジェクトを基準に記載する。

app.js へ以下を加筆する。

1
2
3
4
5
6
7
const methodOverride = require('method-override');

// 中略

app.use(methodOverride('_method'));

// 省略

上記を記載すれば、ブラウザからリクエストを発行する際、 クエリパラメータ_method=PUT_method=DELETE を記載することによって Node.js/Express 側で PUT/DELETE リクエストとして解釈される。
つまり、 express.Router().put()express.Router().delete() へルーティングされるようになる。
ブラウザからのリクエストの発行の例は以下のようになる。

1
2
form(action="/clients?_method=PUT")
input(type="submit" value="submit")
1
a(href="/clients?_method=DELETE")

router.put('/clients', ...router.delete('/clients', ... を実装すれば、上記のブラウザからのリクエストを処理することができるようになる。