Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goで遊ぶHTTPミドルウェア ― X-HTTP-Method-Overrideを試してみた
Search
yamatai12
August 26, 2025
Technology
440
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Goで遊ぶHTTPミドルウェア ― X-HTTP-Method-Overrideを試してみた
こちらのLT版です!
https://qiita.com/yamatai12/items/e039b83454413f0eafcf
yamatai12
August 26, 2025
More Decks by yamatai12
See All by yamatai12
Goのerror型がシンプルであることの恩恵について理解する
yamatai1212
1
360
AI時代の開発でも開発前の段取りの整理と振り返りを徹底したい 🧠
yamatai1212
0
150
PostgreSQLだと外部参照キーにデフォルトでインデックスが貼られていない
yamatai1212
1
330
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
490
なぜPostgreSQLのGROUP BY句にエイリアスが使えるのか?
yamatai1212
0
180
SMTP完全に理解した ✉️
yamatai1212
0
370
DNS設定が必要になって初めて分かったこと
yamatai1212
0
100
Next.jsでAPIキーを安全に扱う方法
yamatai1212
0
86
LT登壇を続けたらポッドキャストに呼ばれた話
yamatai1212
0
1.2k
Other Decks in Technology
See All in Technology
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
180
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
140
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
250
Microsoft のサポートとフィードバック総まとめ
murachiakira
PRO
0
130
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
190
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
120
Zenoh on Zephyr on LiteX
takasehideki
2
140
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
1.7k
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.9k
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
140
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
200
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
460
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
220
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
250
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
The agentic SEO stack - context over prompts
schlessera
0
830
Building Applications with DynamoDB
mza
96
7.1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Ruling the World: When Life Gets Gamed
codingconduct
0
270
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
160
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
240
Transcript
Goで遊ぶHTTPミドルウェア ― X-HTTP-Method- Overrideを試してみた Taisei Yamane(taiyama1212) 1
自己紹介 山根大生(Webエンジニア) SNS X(taiyama1212) Qiita(yamatai12) Zenn(yamatai12) 好きなこと ジムで体を鍛える 、旅行 2
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそも 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
3
背景 X-HTTP-Method-Overrideヘッダを以下の本を読んで知った https://www.oreilly.co.jp/books/9784873116860/ サーバー側のフレームワークやミドルウェアがこのヘッダをサポートして自動で 解釈してくれる場合も多い どんなフレームワークやミドルウェアがこれに対応しているのか? Goのビルトインではどんな記述をする必要があるのか? 4
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそもミドルウェアとは 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
5
X-HTTP-Method-Overrideヘッダとは API側でGET,POST以外のメソッドをPOSTを使って表現することを許可するのを可能にするヘッダ のこと 例えばHTMLのForm経由だとメソッドにはGET,POST`しか指定できず、 PATCH,DELETE,PUTはサポートされていない 6
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそもミドルウェアとは 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
7
X-HTTP-Method-OverrideヘッダーからMethodを上 書きする機能を持つフレームワークやミドルウェア JavaScript Expressでは method-override というミドルウェアを使うことで実現できる https://expressjs.com/en/resources/middleware/method-override.html PHP slimでは MethodOverrideMiddleware
というミドルウェアを使うことで実現できる https://www.slimframework.com/docs/v4/middleware/method-overriding.html 8
Go メジャー所のものだと見当たらなかった Ruby Rack でミドルウェアが用意されている https://github.com/rack/rack/blob/main/lib/rack/method_override.rb 9
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそもミドルウェアとは 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
10
そもそもミドルウェアとは https://mattstauffer.com/blog/laravel-5.0-middleware-filter-style/#what-is-middleware リクエストを受け取り、何らかの処理を行い、次の層に別のリクエストオブジェクトを返す 11
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそもミドルウェアとは 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
12
実装:Goでミドルウェアを実装しX-HTTP-Method- Overrideからメソッドを上書きする 13
func (s *Server) methodOverrideMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter,
r *http.Request) { if r.Method == http.MethodPost { if override := r.Header.Get("X-HTTP-Method-Override"); override != "" { r.Method = override } } next.ServeHTTP(w, r) }) } methodOverrideMiddlewareは、引数として受け取ったnext http.Handlerをラップし、新 しいhttp.Handlerを返している。 ミドルウェアは デコレーターパターン で実装していることが分かった。 14
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそもミドルウェアとは 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
15
今後調べたいこと HTTPメソッドをPost,Getメソッドでしかクライアント側で指定できないことがあ るケースについて HTMLのForm経由だとメソッドにはGET,POST`しか指定できない理由について 16
目次 背景 X-HTTP-Method-Overrideヘッダとは X-HTTP-Method-OverrideヘッダーからMethodを上書きする機能を持つフレームワ ークやミドルウェア そもそもミドルウェアとは 実装:Goでミドルウェアを実装しX-HTTP-Method-Overrideからメソッドを上書き する 今後調べたいこと 最後に
17
最後に 以下を理解できました X-HTTP-Method-Overrideヘッダとは API側でGET,POST以外のメソッドをPOSTを使って 表現することを許可するのを可能にするヘッダ のこと ミドルウェアは リクエストを受け取り、何らかの処理を行い、次の層に別のリクエストオブ ジェクトを返す 役割を持つ
例えばミドルウェアでX-HTTP-Method-Overrideヘッダーからメソッドを上書きす ることができる ありがとうございました!! 18
参考 https://www.oreilly.co.jp/books/9784873116860/ https://mattstauffer.com/blog/laravel-5.0-middleware-filter-style/#what-is- middleware https://blog.jxck.io/entries/2023-11-27/hixie.html https://qiita.com/shoking/items/4e26b5438c3437400f53 https://www.alexedwards.net/blog/http-method-spoofing https://www.slimframework.com/docs/v4/middleware/method-overriding.html https://blog.yezz.me/blog/Decorator-and-API-design https://www.geeksforgeeks.org/system-design/decorator-pattern/
19
https://qiita.com/mk777/items/6f463466027939a4b137 https://qiita.com/giraffate/items/ea962f1cdad21c2f68aa https://dev.to/atanda0x/middleware-in-go-nfi https://qiita.com/sinke_123/items/ae6bd6cb7a95dd7d5ce8 https://worldvectorlogo.com/ja/logo/gopher 20