Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Goで遊ぶHTTPミドルウェア ― X-HTTP-Method-Overrideを試してみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yamatai12
August 26, 2025
Technology
570
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
400
AI時代の開発でも開発前の段取りの整理と振り返りを徹底したい 🧠
yamatai1212
0
170
PostgreSQLだと外部参照キーにデフォルトでインデックスが貼られていない
yamatai1212
1
410
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
540
なぜPostgreSQLのGROUP BY句にエイリアスが使えるのか?
yamatai1212
0
220
SMTP完全に理解した ✉️
yamatai1212
0
410
DNS設定が必要になって初めて分かったこと
yamatai1212
0
120
Next.jsでAPIキーを安全に扱う方法
yamatai1212
0
190
LT登壇を続けたらポッドキャストに呼ばれた話
yamatai1212
0
1.3k
Other Decks in Technology
See All in Technology
今さら理解するウェブフォントver.2026
takanorip
3
930
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
160
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
190
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
450
Rust で関数型ドメインモデリング
takonda
0
170
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
140
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
220
SharedWorkerを使ったキャッシュでネイティブアプリに負けないユーザー体験を目指す
kakehashi
PRO
1
110
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
410
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.8k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
810
Agile that works and the tools we love
rasmusluckow
331
22k
Utilizing Notion as your number one productivity tool
mfonobong
4
620
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Chasing Engaging Ingredients in Design
codingconduct
0
370
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
540
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Building an army of robots
kneath
307
47k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
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